Variant: separate api for type conversion fields

As described in issue #175 we decided to provide two different APIs for
individual and shared field access. One does implicit conversions and
the other one throws exceptions if the type requested is not the same
the field was encoded in.

fixes #175.
yup, I'm testing a few lines below. This statement shouldn't fail at this point, but when you try to dereference it it should throw an invalid_argument error. Tested in lines 164-165.