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.

The preferred way now is to access first @parts through the reader
method and apply any method on it instead of calling them directly on
the `PartsList` object.

We also need to redefine #== as checks between PartsList objects and
arrays were valid before.
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