feat(user-profile): add avatar and banner support for user profiles
Add comprehensive user profile customization including avatar and banner
images, with full validation, PDS integration, and Jetstream event handling.
## User Profile Avatar/Banner Feature
- Database migration 027: add display_name, bio, avatar_cid, banner_cid columns
- POST /xrpc/social.coves.actor.updateProfile endpoint with blob upload
- Size limits: avatar (1MB), banner (2MB); MIME validation (png/jpeg/webp)
- Request body limit (10MB) and field length validation (64/256 chars)
- Jetstream consumer handles app.bsky.actor.profile commit events
- CID-to-URL transformation for profile images via PDS getBlob endpoint
- UpdateProfileInput struct for type-safe partial updates
- CHECK constraints in migration for display_name/bio lengths
- Improved PDS error handling with pdsError type
## Testing
- Repository tests: 8 new tests for UpdateProfile and queries
- Service tests: 11 new tests for profile operations
- Consumer tests: 20 new tests for Jetstream event handling
- Handler tests: 27 new tests including validation edge cases
- E2E integration tests: 4 new tests with real infrastructure
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>