Clean up and standardise EXTH record handling

Guessing how to unpack EXTH values based on size is unreliable, and the
previous method required a second dictionary of EXTH records to distinguish
which records we should apply the unreliable heuristics too.

Replace that with a single dictionary of EXTH record names, and then a secon
dictionary that explicit specifies what unpacking, if any should be applied
specific EXTH records.
Merge in changes from mobidedrm up to 0.41.

There isn't much of interest here, except for the unicode handling.