[Fix] Prevent race conditions and fd reuse bugs in fuzzy TCP connections
Fix critical race conditions in TCP connection management for parallel message processing:
1. Add connection to pool BEFORE starting event watcher to prevent duplicate connections
when multiple tasks try to connect simultaneously
2. Close fd and set to -1 immediately on connection failure to prevent fd reuse bugs
3. Create fuzzy_tcp_connection_close() helper to ensure consistent cleanup
4. Set conn->fd = -1 after close in connection_free to prevent double-close
These changes prevent crashes when processing thousands of messages in parallel where:
- Multiple tasks create duplicate connections to same upstream
- OS reuses fd numbers after close, causing wrong socket operations
- Event handlers access stale fd values after connection cleanup