con-rs: lift Point and chain_tree
Adds two modules to con-rs: - `types::Point` (with Display + minicbor Encode/Decode codec). Both consumers must agree on the on-wire encoding of a chain point, so the codec lives with the type. con-rs picks up `minicbor` as a dep. - `chain_tree` (`ChainTree`, `ChainTreeEntry`, `is_better_tip`, `ChainNode`): the fork-aware tree of block headers used by Praos longest-chain selection. Lifted verbatim; HashMap iterations are sort-stabilized at the public API boundary, so internal collection choice doesn't leak determinism. Adds `Default` impl and `is_empty` to satisfy clippy. Net-core now depends on con-rs and re-exports `Point` via `pub use con_rs::Point`, so all callers continue to import from `net_core::types`. Net-core's `Tip`, `MAX_POINTS`, `decode_points` / `encode_points`, and the existing tests stay where they are — they're wire-protocol concerns. Net-node's `chain_tree.rs` is deleted; imports in telemetry, consensus mod, and the praos sub-layer are rewritten to `con_rs::chain_tree::*`. Verified: 57 con-rs tests pass (was 42 — +4 Point tests, +15 chain_tree tests now run in con-rs), 529 net-rs workspace tests pass (was 544 — the 15 chain_tree tests moved out), cargo clippy --all-targets shows 11 warnings in net-rs (baseline) and 0 in con-rs. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>