Add unified ObserverBackend for local/remote observer modes
Consolidates local (Callosum) and remote (HTTP upload) logic into a single
ObserverBackend class that both platform observers use. This eliminates
duplicate conditional code and enables --remote support on macOS.
Key changes:
- New ObserverBackend class in observe/remote.py handles mode switching
- Both Linux and macOS observers now use backend.emit() and segment_complete()
- JOURNAL_PATH optional in remote mode (uses /tmp/solstone-observer for staging)
- Added --remote CLI argument to macOS observer
- Temp staging directory persists after crashes for diagnostics
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>