Improved version of the write barrier

In the common case of either setting a non reference value or setting a
variable on a young object, we don't have to call a method but check
this inline. This improves performance for these cases where we don't
need to store an object in the write barrier.
Increase default maximum size of normal methods

This helps in JIT'ing methods where the JIT profile changed because of
now treating + as a regular method. One example here is String#+ which
now can be inlined and benefits from larger maximum sizes.
Introduce global interrupt checking
Rename vm into state for State objects
Enable interrupt checking when setting thread step
Cheaper prologue checks for JIT'ed methods

This makes the common case of nothing happening inside the vm a lot
cheaper. It shaves a second off the following script (7.5 to 6.5 seconds
on my machine):

def fib(n)
 if n < 2
   n
 else
   fib(n - 2) + fib(n - 1)
 end
end

100000.times do
  fib(15)
end
Add specs for Process.(g|s)etrlimit on X19

It coreces String as Symbol on X19.
Fix Process.coerce_rlimit_resource for String argument on X19

* MRI accepts String as resource name on Process.(r|s)etrlimit argument.

When passed resource name.

* Don't use #to_sym. Use #is_a? or #kind_of? for check Symbol.
* Use #to_str for check String.
Use env shebangs for pre-installed gems. Closes #2167.
Check if Proc has a block before using it.

The arity check for lambda mode uses the block... the check for whether there
is a block should come first.
Use CompiledCode's name in Proc argument errors.
Use CompiledCode's name in BlockEnvironment argument errors.
Updated bundled rubygems to 1.8.25.
Updated CI specs to RubySpec ee468c6b.
Fixed multi-byte symbol spec.
Fixed Proc#arity specs.
Updated CI tags for 1.8 mode.
Updated MSpec source to b6027016.
Updated CI tags for 1.9, 2.0.
Fixed Thread[.#]abort_on_exception specs.