Use a view for GlowServer.getOnlinePlayers()

As it stands, whenever a call to ```getOnlinePlayers()``` is made, it loops over all worlds and adds players to a list. While this behaviour works, it is not at all efficient (hence the TODO). The JavaDocs also say that this will be a view, not a new collection.

I have created ```SuperCollection```, which is a wrapper around Guava's ```Iterables.concat()``` which iterates over each ```Iterable``` it is passed.

This works thanks to the logic in ```EntityManager```, which keeps a Map of entity type to collection of those entities - which is directly piped into the view. I've also made the collection unmodifiable, so that a plugin cannot break the server internals.
why not one method? `setPlayerOnline(GlowPlayer, boolean)`