Implement proper BT/ET text object lifecycle tracking with diagnostics for
malformed PDFs that have mismatched or nested text blocks.
Changes:
- Add BtNested, EtWithoutBt, TextShowOutsideBt diagnostic codes
- Update BT to emit BtNested when called while already in text block
- Update ET to emit EtWithoutBt when called without matching BT
- Add TEXT_SHOW_OUTSIDE_BT diagnostic for text-show operators outside BT/ET
- Update both process_with_mode and execute_with_do functions
- Add 10 acceptance criteria tests
Closes: pdftract-1vxh
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>