Overhaul Tile Entity Ticking

TileEntity Ticking would call isChunkLoaded for every single tile entity, which can be expensive
Also, the worlds tile entity list was used only to have a controlled list for what tile entity needs to tick and protect it from modification during ticking.

With a simple watcher for modification instructions, we can remove usage of the master list.
This reduces memory usage
This also reduces lag by List resizing (which may happen often on large servers)
This also lets the JVM have better CPU cacheing potential by working on the same area at a time.

We now simply iterate over every loaded chunk (and check that its not in the unload queue, much faster than checking is a chunk loaded), then iterate its tile entity list
In local testing on dev server (performs worse than production), I was able to tick 109k chests/tick without TPS loss (the heaviest tile entity)
New Old Network Manager

Not ready to move to netty yet
improve the existing network manager
fixed size thread pool for writes reducing threads by players size
Block Meta API

This adds an API for getting and setting PERSISTENT MetaData on a block level.

Meta is is provided in a simple Map/List setup and does not expose raw NBT access.
Chunk Save Reattempt

We commonly have "Stream Closed" errors on chunk saving, so this code should re-try to save the chunk in the event of failure and hopefully prevent rollbacks.