Add specs for Range#size
Implement Range#size

This method was introduced in Ruby 2.0.0.
Move infinite range expectations to their own example
Remove type check of last range element when calculating size

`Numeric` returns `nil` when compared to another type. This causes an
`ArgumentError` when trying to build a range that starts with a
`Numeric` but ends with a different type, and thus, it is unnecessary to
check the end element because it _must_ also be `Numeric` if the first
is.
Merge pull request #2622 from zaeleus/range#size

Implement Range#size
Exclude .ffi generated files from gems for signature

This prevents the signature being regenerated on each invocation of rake
build. This is because these files are generated each time the build
installs the gem helper files in the runtime directory.
Add spec for changing $LOAD_PATH during Autoload

Extracted from #2623
Fix loading autoload when $LOAD_PATH changes

This explicitly tracks whether we've attempted to load the file already
so we do this only once. Before this depended on the require returning
false since the file was already loaded. This logic doesn't work if
$LOAD_PATH changes result in a different file being loaded.

This was happening with the new gemified stdlib, because 'pathname.rb'
was available both in lib/ and in the gem after loading the gem changed
$LOAD_PATH.

Fixes #2623
Native frames don't have self so use this for those cases

When we do a send from the C-API we have a native call frame that has no
scope, so we can't use that to get to self. Since the concept of self
doesn't make much sense for the C-API we use the object itself in that
case.
Add spec for explicit from / to encodings for String#encode
Also check source encoding

The source encoding might be given explicitly and not an ASCII
compatible encoding.

Related to https://github.com/flori/json/pull/185
Port an Enumerator::Lazy spec fixture to Enumerable with adapted
Improve some Enumerable#find_index specs
Fix Enumerable#find_index for yields variety. Fixes #2625
Use signed value to properly check whether there's a negative value
Remove unused variable
Make methods static that can be static

Also limits the input for the sscanf call explicitly in size.
Remove unused methods from ObjectMemory
Method in machine code can be const
Small cleanup of unused code