Add real Modbus TCP communication through ModbusRelayController:
- T025a: Connection setup with Arc<Mutex<Context>> and configurable timeout
- T025b: read_coils_with_timeout() helper wrapping tokio::time::timeout
- T025c: write_single_coil_with_timeout() with nested Result handling
- T025d: RelayController::read_relay_state() using timeout helper
- T025e: RelayController::write_relay_state() with state conversion
- Additional: Complete RelayController trait with all required methods
- Domain support: RelayId::to_modbus_address(), RelayState conversion helpers
Implements hexagonal architecture with infrastructure layer properly
depending on domain types. Includes structured logging at key operations.
TDD phase: green (implementation following test stubs from T023-T024)
Ref: T025a-T025e (specs/001-modbus-relay-control/tasks.md)