Use the "composition over inheritance" technique

Instead of inheriting from `Array`, let's create an attribute that is an
array. The current object doesn't fit with the Liskov substitution
principle as, for instance, #sort is broken on Rubinius.

This makes the `PartsList` class compatible with Rubinius as `undef map`
will remove the map method but some other Enumerable methods (e.g. sort)
rely on it.
Add a fallback for Array methods

For the sake of backward compatibility, we need to provide a fallback
for missing method that may be used in the existing libraries.

We also need to redefine #== as checks between PartsList objects and
arrays were valid before. Moreover, we are serializing the Array, not
the object itself so we need to pass it to the YAML#dump method.
Alias to_ary and @parts' reader to make JRuby happy

Since we are relying on a hack through method_missing to provide Array's
methods, PartsList normally doesn't respond to #to_ary.

However, JRuby does a #respond_to check (http://git.io/LdHj0w) trying to
convert the object. Thus, we need to provide this method.
Let's remove Rubinius from the allowed failures