Finally got libffi stuff up and running, I blame libffi for having
confusing documentation for the delay

Really It said I needed to fill a variable, which I assumed meant I
needed to allocate it, but no.

Also there was a bunch of stuff that was my fault, I allocated some
things on the stack that I needed to allocate on the heap and some other
stuff. But I did get everything working.

I changed ccall to use libffi, I kept my version (commented out) just
because it's so ridiculous

I also got ffi closures working which I can use to call lisp functions
as c functions. I added support for this to mapcar as a test case, but I
need to go through all the higer level functions I have and fix things.