adds strict typing layer on to ffi on a per type basis, especially helpful if
you are binding a library with opqaue pointers and want to ensure that what is
being passed to the native layer is indeed the proper type