use ffi as the c code interface

FFI extensions are easy to read, write and maintain
prevent blocking on MRI

This frees up the GIL before calling the function, allowing ruby to
process other work in parallel (another rails request for example)
spec passes
update travis
Merge pull request #13 from cotag/master

Use FFI instead of a Ruby C ext