Replace etcp_router_bind/etcp_route_send/etcp_router_unbind with direct etcp_bind/etcp_send/etcp_unbind + find-conn-by-node_id helpers. Same approach as db_sync (0x20). Service IDs unchanged (0x30, 0x31).
- merkle_sync.h/c: tree (5-level prefix, SHA256 buckets), wire protocol (HASHES/REQUEST/BATCH), sessions (10s timeout, 3 retries), async API with done_cb - member_sync: thin glue layer, implements 3 data model callbacks (update_bucket_hash, get_items, apply_items) for chat members - chat_sync: updated member_sync_start() calls with done_cb callback - member_tree_hash table renamed to merkle_tree_hash - member_sync.h public API preserved, internal tree/wire logic removed