OmniNet 0.7.0: Hive-Agent Features + WebSocket Upgrade Fix + Version Macros

All 6 features from the hive-agent feature request (prompt.txt)
are now complete, plus the WebSocket HTTP→WS upgrade handoff fix
from the 2026-06-14 update, plus a version-macros fix so the
CLI tools correctly report v0.7.0 instead of the v0.1.0 fallback.

- Phase 11a: Server::boundPort() — actual bound port via getsockname()
- Phase 11b: WebSocket::Server::broadcast() / fan-out API
  (addClient, removeClient, sendTo, clients, connectionCount)
- Phase 11c: Server::onReady(uint16_t boundPort) lifecycle callback
- Phase 11d: Request::authHeader() / bearerToken() / traceId() / requestId()
- Phase 11e: Router typed body parsing (JsonHandler overloads for
  get/post/put/patch/delete_/head/options)
- Bonus (74d9418): full HTTP→WS upgrade handoff via PostUpgradeCallback
  mechanism, so the WebSocket broadcast API is now reachable from
  real client connections.

- Root CMakeLists.txt now uses ${DETECTED_MAJOR} (set by the
  git-tag parser) instead of ${PROJECT_VERSION_MAJOR} (set by
  project() AFTER our compile_definitions call, so it overrode
  our values).
- tools/tools_common/CMakeLists.txt had two duplicate
  compile_definitions blocks that were never actually removed
  despite a v0.6.0 comment claiming they were. The v0.6.0
  fix comment was also wrong: PUBLIC compile_definitions on
  OmniNet do NOT transitively propagate through static-library
  dependents (tools_common), so tools were always seeing the
  fallback values from version.h (0.1.0) instead of the real
  version.
- Removed a duplicate version-print line in root CMakeLists.txt.

- Response::build() suppresses Content-Length for 101/204/304
  (RFC 7230 §3.3.2, RFC 6455 §1.3)
- Connection server-side ctor sets m_open = true
  (was default false, broke addClient)
- Connection::close() checks for null socket (fixes mock segfault)
- Self-pipe trick for instant accept-loop shutdown (replaces 100ms poll)
- Connection timeouts (SO_RCVTIMEO) now actually applied to socket
- Content-Length auto-set in Response::build() (was missing in v0.6.0)

- test_websocket_echo (new, 74d9418): 2/2 PASS
- test_websocket_broadcast: 10/10 PASS
- test_sync_http_server: 18/18 PASS (incl. 9 new boundPort/onReady tests)
- All other tests: PASS
- Full build: clean, zero warnings, all 40+ targets compile
- All 10 CLI tools report v0.7.0