feat: full-text search index across documents (#55)
Client-side search over decrypted document names and content.
Since all content is E2EE, search runs entirely in the browser.
- Tokenizer with HTML stripping and entity decoding
- Inverted index for fast candidate lookup
- Ranked scoring: name match > phrase match > token match
- Prefix matching for partial word queries
- Snippet extraction with match context
- 28 unit tests