Port three unmerged upstream PRs with adaptations for the fork's
callback-based ActivityWithSubactivity architecture:
- PR #1185: Cache KOReader document hash using mtime fingerprint +
file size validation to avoid repeated MD5 computation on sync.
- PR #1217: Proper KOReader XPath synchronisation via new
ChapterXPathIndexer (Expat-based on-demand XHTML parsing) with
XPath-first mapping and percentage fallback in ProgressMapper.
- PR #1090: Push Progress & Sleep menu option with PUSH_ONLY sync
mode. Adapted to fork's callback pattern with deferFinish() for
thread-safe completion. Modified to sleep silently on any failure
(hash, upload, no credentials) rather than returning to reader.
Made-with: Cursor