Fix Atomic MACROs

It is necessary to not consider 64bit architecture as X86.
Update libffi to 3.1

Update libffi from 3.0.13 to 3.1
Disable MMAP workaround for Selinux

We disable this on Rubinius since it causes crashes. The JIT
needs to be able to create these mappings anyway, so it doesn't
create an additional depedency in FFI.
Update libffi to 3.2

Update libffi from 3.1 to 3.2
Merge pull request #3194 from gustavotemple/fix-vm-atomic-macros

Fix Atomic MACROs
Spec for #2977: Error calling IO.write to a FIFO
Fix for #2977: Error calling IO.write with a FIFO
Spec for #2977: Improve spec for IO.write on FIFO

Remove unneeded conditional
Use IO.read instead of `cat`
Added new Marshal.load specs for objects with user-defined _dumps

These specs were added after rbx's Marshal broke in an app that had
defined its own _dump and _load methods upon an object -- see
UserDefinedImmediate in marshal/fixtures/marshal_data.rb.
Fix Marshal for objects whose _dump returns an immediate.

specs and context behind this change: 77f88aeb
Include build link in Travis IRC notifications.
Added specs for Kernel#caller_locations.

This also includes standalone specs for Thread::Backtrace::Location and its
methods.
Added support for Kernel#caller_locations.

This fixes #3218.
Updated specs for Kernel#caller

This adds a set of actual specs instead of just checking if the "caller" method
is present.
Allow a limit to be set in Kernel#caller.

MRI allows one to specify a limit when calling Kernel#caller. Besides that the
`exclude_kernel` argument wasn't even used.
Removed most rubinius:bug calls from JIT.
Don't attempt to enqueue JIT request if disabled.
Updated gems_list.txt.
Fixed making Ruby values for Metrics values.
Create FSEvent instances pinned.