Add support for IO.readlines(name, options) with implicit separator

This allows a call such as IO.readlines("foo", :encoding => "utf-8"),
instead of raising a Coercion error as before.
Add spec for IO.readlines with implicit separator and options Hash
Fix `MatchData#values_at` method for a range arguments

Before:
    /(.)(\d+).(\d+)/.match("$10.99").values_at(1..3)
    # => [["$", "10", "99"]]
After:
    /(.)(\d+).(\d+)/.match("$10.99").values_at(1..3)
    # => ["$", "10", "99"]
Add spec for `MatchData#values_at` with a range arguments
Merge pull request #2275 from lexmag/fix-matchdata

Fix `MatchData#values_at` method for a range arguments
Use correct conditional because 2.0 mode behaves like 1.9
Update socket for 2.0 mode and update tags
Add specs for accessors on immediates
Fix using an accessor on immediates

Also cleans up unused code because it was inlined into Object.

Fixes #2276
Remove tags for passing specs

Also adds 2.0 mode for rbconfig specs.
Use symbol() on state everywhere

Also adds the specific length for generated code where we know the
length of the symbol anyway, so it doesn't have to be calculated. This
also prevents the need for the original method in VM to setup a State
object.
Include string header for state
Use WeakRef to track inheritance for serial increments

This sets up weakrefs for each module where we track modules or classes
that this module is included into or that this class is a parent of.
This allows us to increase the serial when a method is added to a
certain module or class. In that case we bump the serial of all the
classes below in the hierarchy so they get invalidated as well.
Use class_id for inline caches and add serial property

With this change we keep track of a serial per class and the combination
of the class_id and the serial_id is used to invalidate inline caches.
This means that we can remove the inline cache registry in the future
and do inline cache invalidation pure on these serials.

This is pretty much the same strategy as JRuby uses. It trades
invaliding caches based on classes for on name. This means that we
should have a lot less invalidations and we don't need the relatively
expensive operation of removing all caches with the same name.
Setup serial increases in proper places
Check inline cache with knowledge whether the cache grows

This makes sure we don't move to polymorphic caches when we are going to
replace a cache entry for the same class id because the serial changed.
Cleanup no longer needed InlineCacheRegistry

With the serial invalidation strategy the registry is not longer needed
to keep track of all inline caches.
Unify serial increases and global method cache clearing

In all cases both these were called, so unifying them gives us a nice
cleanup.
Also check against serial for cache checks
Add helper for checking against class id

This is used when only the class id is what needs to be checked, for
example for accessing ivars where the current serial is irrelevant for
the object layout.