Treat SMSG_MAIL_LIST_RESULT expirationTime as days-remaining (not an
absolute timestamp) across the UI list/detail panels and the Lua
GetInboxHeaderInfo daysLeft field, fixing the bogus 'Dec 31, 1969'
expiry. Add parseAuctionMailBody to decode the auction invoice body
(hexGuid:bid:buyout[:deposit:consignment]) into a coin breakdown
instead of printing it raw, and resolve auction subjects/item names
for the mail list and detail views.
WotLK servers inspect 7 enchantment slots per auction entry (PRISMATIC
joined MAX_INSPECTED_ENCHANTMENT_SLOT in 3.x); the parser read 6, so
every field after the enchants shifted by 12 bytes and cascaded across
entries. Vanilla sends only a single permanent enchantId with no
duration/charges and no item-flags field, so the classic path over-read
12 bytes per entry, and its totalCount-only trailer never satisfied the
8-byte combined read. Layouts verified against vmangos, cmangos-tbc,
and AzerothCore BuildAuctionInfo; TBC (6 triplets + flags) was already
correct. Adds per-expansion parser regression tests.