Add cache for $LOAD_FEATURES

Rubinius will create cache for require short paths. When user
require file ie:

  require 'path'
  CodeLoader.loaded_features_index => { 'path' => '/real/path' }

When we try require 'path' once again Rubinius will not travel via
$LOAD_PATH because loaded_features_index include 'path'. But when user
will try require '/real/path' Rubinius will find this feature in
$LOADED_FEATURES. In the case of not finding the file anywhere Rubinius
will try find file in $LOAD_PATH and fill in cache.

When $LOADED_FEATURES change we need to invalidate cache!
With cache all specs pass
Merge pull request #2353 from LTe/cache-for-require

Add cache for $LOAD_FEATURES and $LOAD_PATH