Rewrode String#encode specs.
Mostly fixed String#encode, #encode!. Fixes #2047.

More fixes coming once I replace the :xml => stuff hacks.
make llvm 3.2 work
Merge pull request #2045 from Gibheer/new_llvm_version

changes to work with llvm 3.2
Use a single source of offsets for JIT code

We had two lists of offsets, that both had to be maintained. Now use the
list with the specific naming consistently everywhere.
Cleanup of unused code

Related to #2036
Add FFI::Union
Fix tabs and turn into spaces
Fix some issues with FFI handling

This removes Rubinius specific STATE and Object* handling which was
broken to begin with. It also fixes the case where we have one less
formal argument if we pass a block as a callback.
Add handling for varargs in FFI
Improve FFI exception messages
Update to latest specs from FFI gem

This has a reworked build system that just reuses the existing compiler
that Ruby was built with. It also uses the same flags, so we don't have
to do all kinds of different platform specific stuff in a separate
makefile.
Fix a few small bugs in FFI exposed by the new specs
Replace usage of eq with ==
Add support for running callbacks in a separate thread
Remove unused variable
Enable FFI specs for CI

Setup tags for all the failing specs and exclusions for files that have
issues when they are being loaded.
Change licensing of the specs to the same license as Rubyspec

All the committers to the spec/ directory have agreed to this licensing
change. Also changes the license of the test library since the specs
depend on that.
Update to latest Ruby-FFI specs
Add FFI specs licensing information