Add idempotent imports with dedup manifests and entry-level merge
Source-level dedup: hash source file before import, check existing
manifests. If same file was already imported, skip with message.
--force overrides.
Entry-level merge: when writing to a day that already has entries
from the same source, compute content keys and skip duplicates,
appending only new entries.
- hash_source() for file and directory SHA-256
- write_manifest() / find_manifest_by_hash() for manifest lifecycle
- write_structured_import() merges with existing JSONL on re-import
- CLI checks source hash before processing, writes manifest after
- 14 new tests for hashing, manifests, entry merge, and dedup
- Updated 4 existing tests for manifest expectations
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>