Fixes the unsigned as return value issue

RELATED: #14 

We map some fundamental types to variant-friendly ones so that we can have a two-step conversion from the return type to the variant. In later versions, the `variant_friendly` metafunction would provide a conversion method that may or may not be specialized for this type, giving us additional control so that we can do crazy things such as handling tuples or collections.

This version is a POC so only unsigned int is supported. It fixes the bug though.
I added some more cases to the return type unit tests to make sure everything was OK.