Add offline sync modes and first-boot calendar import
Adds OFFLINE_SYNC_MODE config option:
- 0: Block button presses when not synced
- 1: Calendar wins - local changes sync TO goals.garden (default)
- 2: goals.garden wins - remote overwrites local
First boot behavior (no saved goal):
- Request calendar's current LED state via new I2C protocol
- If LEDs blank: select first available goal
- If LEDs set: create "Everyday Calendar" goal and upload completions
New I2C commands for bidirectional state transfer:
- RSP_REQUEST_CAL_STATE: ESP32 requests calendar state
- CMD_CAL_STATE_PART1/2: Calendar sends its LED bitmap
Also adds ATProtoClient::createGoal() for creating new goals.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>