fix(relay): address PR review feedback on MM-71
- Bump tower workspace dep to 0.5 to eliminate duplicate tower 0.4/0.5 in build graph
- Add MethodNotImplemented to status_code_mapping test in error.rs
- Add xrpc_delete_returns_405 test (documents that non-GET/POST is intentionally 405)
- Add xrpc_response_has_json_content_type test at the router level
- shutdown_signal() now returns anyhow::Result<()> — propagates instead of panicking
- Log axum server errors via tracing::error! before propagating
- Fix "shadow" comment: Axum uses priority, not shadowing
- Fix ErrorCode enum doc to acknowledge PascalCase exceptions
- Fix tracing::error! to use structured error = %err field
- Fix body test to capture status before consuming body with into_body()
- Narrow "Functional Core (pure — no I/O)" to "I/O-free"