feat: add hash bucket storage and thumbnail caching
- Store avatars in 3-level deep hash bucket directories based on
SHA256 of DID to prevent large flat directories
- Cache thumbnails alongside full-size images to avoid repeated scaling
- Return placeholder avatar for invalid/unresolvable identifiers
instead of 404 errors
- Support did:web identifiers (already handled by Indigo library)