Start streamlining implementation by delegating Unboxing to the types themselves
Start streamlining implementation by delegating Unboxing to the types themselves

This change introduces an `unbox()` function on `UnboxCompatibleType` and starts
moving unboxing logic into the types themselves, rather than relying on a central
implementation in `UnboxValueResolver`.
JohnSundell/Unbox,JohnSundell/Unbox