ReceiptBuilder#image implements GS v 0 raster printing (no image library
needed for the demo -- a procedural 8px checkerboard proves it end to
end). Skipped attempting the printer's real-time clock: unsure the
TM-T20II actually has a battery-backed RTC (that's usually an option on
higher-end models), not worth guessing at an undocumented command.
- Saved labels/receipts now show on one page instead of split across
Shipping labels and Receipts, each with a badge for its type/printer,
Edit (name+content, in place), Print, and Delete.
- ZPL labels get a real visual preview via Labelary's public render API;
ESC/POS ones show their raw content (no good general preview for that).
- The Receipts free-text field only ever encoded whatever was typed as
literal printable characters -- pasting mnemonic ESC/POS notation
(ESC/GS/LF as command names, 0xNN as raw bytes) just printed as text
instead of being interpreted. Added a small line-based parser for that
notation (ReceiptBuilder#raw appends already-resolved bytes verbatim),
verified byte-for-byte against an example with align/bold/barcode/cut.
Custom ReceiptBuilder instead of the escpos gem -- its diacritics handling
needed the same manual UTF-8->CP852 encode call anyway, based on earlier
experiments in ~/test/epson/.