Using a ProxyArray to get ListBox items handled correctly

Meant to not make a new branch, but I accidentally screwed up the old one when trying to revert it and decided to delete it. (See #992).

Anyways, to repeat: this intends to address #820.

This time my approach is an ArrayProxy that inherits from BasicObject and delegates everything to Array. 

Please let me know if this approach is good, needs tweaking, or needs a totally new direction (for example, how about `class ProxyArray < Array`?).

I have some questions / comments. I'll put those in-line before :poultry_leg: :sweet_potato: :fork_and_knife:  time!


So I think the specs didn't pick this up because I designed my solution to keep them from hollering. The specs are all checking matches via `list_box.items` and I wrote that to return a `to_a` and pass the specs.

I hope that the combination of these comments makes what I'm saying clear . . . :)

I'll try again for good luck:

1. I wrote a broken proxy by returning the results of `@gui.update_items` instead of the results of the `send`.
2. I patched it by making the `items` method return the `Array` contents of the `ProxyArray` instead of the broken Proxy.
3. Now I'm going to fix the Proxy and undo the patches.