Move method into right place in kernel for Rational

This wasn't exposed before since the specs loaded the library version
which set up the correct version. We need the correct version in the
kernel and not from lib.
implement rb_str_new5 (rb_str_new_with_class)
add spec for rb_str_new5
define HAVE_ macros for rb_str_new5
Merge pull request #2553 from rubinius/rb_str_new5

Implement rb_str_new5 (rb_str_new_with_class)
Removed language_version from mspec.
Removed use of language_version.

Instead of duplicating the mechanism of ruby_version_is, just use it.
Merge remote-tracking branch 'origin/master' into compiler

Conflicts:
	lib/19/rational.rb
	lib/19/stringio.rb
	lib/20/stringio.rb
	vm/capi/19/include/ruby/ruby.h
	vm/capi/20/include/ruby/defines.h
Removed pre-installed gems from repo.
Merge pull request #2550 from kachick/adjust-some_module_methods

Adjust Module#{module_function,extend_object,append_features,prepend_features} and related methods
Use encoding propagation for String#pattern
Add basic benchmarks to compare UTF-8 string handling algorithms
Add basic specs for character to byte conversions and vice versa

These specs are added to ensure optimizations won't break these
implementations.
Add spec for different encodings and string length
Separate out methods for UTF-8 string handling

This makes it easy to write optimized UTF-8 string handling algorithms
for byte -> character and character -> byte conversions and string
length computation.
Add optimized version of find_character_byte_index_utf8

This improves performance of getting the character index for a certain
byte offset. This works on word sized elements instead of bytes, being
able the handle data 8x faster on a 64 bit machine for valid utf-8 data.
Improve performance of find_byte_character_index_utf8

This also uses the fact of processing a word sized operand at once
instead of working per byte.
Implement faster UTF-8 string length computation algorithm

Anecdotal ri/rdoc generation time for installing Rails 4 with an empty
gem set. Also here there is an almost 10x performance improvement on the
documentation generation time.

Before:

Done installing documentation for i18n, multi_json, tzinfo, minitest,
atomic, thread_safe, activesupport, builder, rack, rack-test, erubis,
actionpack, activemodel, arel, activerecord-deprecated_finders,
activerecord, mime-types, polyglot, treetop, mail, actionmailer, thor,
railties, bundler, hike, tilt, sprockets, sprockets-rails, rails after
2673 seconds
29 gems installed

real45m21.126s
user49m27.377s
sys0m13.794s

After:
Done installing documentation for i18n, multi_json, tzinfo, minitest,
atomic, thread_safe, activesupport, builder, rack, rack-test, erubis,
actionpack, activemodel, arel, activerecord-deprecated_finders,
activerecord, mime-types, polyglot, treetop, mail, actionmailer, thor,
railties, bundler, hike, tilt, sprockets, sprockets-rails, rails after
277 seconds
29 gems installed

real5m26.900s
user6m16.156s
sys0m16.581s
Better way of checking for group permissions.

So this particular problem was a rather interesting one that took a few
frustrating hours of debugging to figure out what the hell was going on.

Lets start with an example. Consider you have the directory /tmp/foo with the
user set to "root" and the group to "rvm" while you're logged in as "alice". On
MRI method calls such as `File.writable?` would correctly indicate that Ruby
could write data to this directory/path. On Rubinius however this would not be
the case. As a result this in my case prevented RVM from installing Gems since
RubyGems would think it couldn't write to the Gems directory (even though it
actually could).

The cause of the problem is as follows: when checking for group ownership
Rubinius would only check if the primary group had write access instead of
taking all the user's groups into account.
Specs for taking different groups into account.

These specs test the changes made to take non primary user groups into account
when calling Rubinius::Stat#grpowned?.