Proper Array inheritance

This pull request is mostly for discussion and testing of the thing, so @opal/owners don't merge it until I merge it myself if it's clear it works.

Onto the thing, all specs are passing right now, there are some fixes for `Array` methods that I'm going to backport to master because they apply there too.

Basically it does some prototype magic to make the inherited class use a wrapper that wraps a real `Array` and defers the method to it.

What needs to be done is testing this with actual software, so @elia and @adambeynon I'm looking at you.

It won't affect anything `Array` related unless you're using objects inherited from `Array`.

*Next in line, mutable Strings and String inheritance.*