Revert "Remove FFI"

This reverts commit 1ca75b2e37ccf67ccaf48389e7d0d38741a78038.

The effort to move FFI logic out of JRuby was never completed, and
we use parts of FFI internally, so we need to revert this.
Revert "Implement a mini-ffi to get Win32API working again."

This reverts commit caa6eaebb56c0885dff1afecd77f553f46f0a444.
Revert "Remove ffi library hook"

This reverts commit cfe02586e584a7f61aade624d6a28ba1a07e65be.
Revert "Remove failing ffi-dependent test"

This reverts commit d3777a5a8444348c81cb433869791f46539dafa2.
Revert "Remove spec:ffi since those files have been moved out."

This reverts commit a0a4f2564b4f9967325f22c3eb165a7ed34714e1.
Fix a few things that changed since FFI was removed.