feat: add FastAPI server with WebSocket and file watcher
Implements Task 1 of Phase 4: Backend Server with WebSocket.
- Create dfgraph/server.py with FastAPI app serving frontend static files
- Implement WebSocket endpoint at /ws that sends graph JSON on connect
- Add file watcher with 300ms debounce that re-assembles graph on changes
- Use ConnectionManager for broadcasting updates to connected clients
- Use lifespan context manager for startup/shutdown
- Support TestClient for unit testing without full event loop