Clarify some allowed behaviour to allow varint deserialization
Since custom functions can't be used in Deserialize implementations,
we have to use some existing functions in special ways.
Fix char support
Previously, this would call the visitor's u32 functions.
Add i128/u128 support using data<16>
Remove references to enum types
Add a few deserialization tests
Add sanity checks for tuple deserialization
Clean up some repeated deserialization code
Remove references to f16
They were removed from the upstream draft.