The XrefResolver::resolve method was a stub returning Null, causing
parse_catalog to fail with '/Root is not a dictionary (type: null)'.
Changes:
- Added source: Option<&dyn PdfSource> parameter to parse_catalog
- Uses resolve_with_source when source is Some, otherwise uses cache-only resolve
- Updated all callers (document.rs, extract.rs, CLI registry.rs) to pass source
- Tests continue to pass None and use cached objects
Fixes: bf-3gmkz
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>