Perl: Make FREEZE/THAW hooks behave the same as they do on CBOR.

This makes it possible for FREEZE hooks to return a list, and for
THAW hooks to accept the list back.

It also ensures that referential integrity for frozen items is
maintained.

It is possible to use the THAW hook to change the class or
representation of the object.

A freeze hook such as:

    sub foo::FREEZE { return "foo" }

will cause all deserialized items of class "foo", to turn into
the string "foo".

Returning

    sub foo::FREEZE { return [ 1, 2, 3 ] }

would turn them into array refs, wheras

    sub foo::FREEZE { return bles [1, 2, 3], "bar" }

would turn them into "bar" objects. Etc.

This needs a lot more testing but resolves the main outstanding
issues I am aware of with the recent FREEZE/THAW features.

This is squash of various commits, including some from Steffen Mueller.
Perl: Fix exception logic in encoder
Perl: A few extra FREEZE/THAW tests
tweak hobodecoder to show which tags are have their track flag set, and fixup layout
Spec: Update FREEZE/THAW section of the spec