Support for multi-block inventories (Double chests)

This PR adds preliminary support for Double Chest inventories.

The core of GlowDoubleChestInventory is GlowSuperInventory, which allows developers to create Inventory trees, that is, Inventories whose changes are delegated to other sub-inventories. A change in a child is immediately reflected in the GlowSuperInventory, and equally a change in GlowSuperInventory is also reflected in the original inventories.

Other cool stuff which this PR adds is:
 - SuperSet: adds a set which delegates in other sets, and as in GlowSuperInventory, changes are propagated in either way. Employed to implement the viewers of GlowSuperInventory.
 - SuperIterator: accepts a list of iterators, and it consumes them in order. Why? Well, you can then iterate through a list of inventories without building a temporary intermediate list, which is very efficient performance-wise.
 - GlowInventorySlot: an inventory slot. This, and the new "slotIterator" method in GlowInventory allows for efficient linear navigation and modification.
The general practice of storing a human in a collection. Things can happen to the player that would cause them to be a held reference here but not anywhere else. Unless I missed the cleanup code for ensuring this player set is kept up-to-date with all the possible invalidating changes (or if invalidating cannot occur in Glowstone), this needs to be addressed.