Ruby FFI compatibility layer

The code is ready to be merged but there is one thing to take car of before that:
how to add a proper way to set the location of includes/library ? (I had to hardcode mine in mrbgems.rake)

I started by extracting the abstraction in mruby-girffi and from there found multiple issues I fixed as well as missing apis or incorrect method signature, in its current state I have a yet to release gem taking advantage of this abstraction to make it works both as a mruby gem and as a mri gem which was my original goal.

I made sure a large part of the ruby ffi interface was implemented but not everything is of course but apis can be added as needed later.