load.c: lightweight loaded features index

* load.c use lightweight structure for loaded features index
  since loaded_feature_path checks name of feature, there is no
  need to store feature string in an index - only hash value
  is stored. And used hash structure need only one memory chunk,
  so that there is no need for memory allocation per feature.
  Offsets in LOADED_FEATURES could be organized in many
  single linked lists inside of single allocated array, to
  avoid many memory allocations.
  And since there is no referred Ruby objects, there is not impact
  on GC.