Cleanup Array and add Reflector

Rather than expose the guts of Array, use a simple Reflector class to access data that isn't otherwise accessible.

The exposure of Array's internal data was only necessary because Ruby doesn't provide mechanisms to otherwise access it. This works around that and by using a separate class, the JIT can make it as fast as a normal ivar access.