Optimize TileEntity Ticking

Re-organizes the servers TileEntity Tick List to be bucketed based on their tick interval.

We now will not even store a Tile Entity that is known to not have any tick function
(half of them), skipping time spent iterating them and checking if they are valid
and in a loaded chunk. In other words, a lot of "meta" time wasted on tile entities
that would never do anything anyways.

This also removes the need to ever tick Chests, by moving their sounds to the actual open/close
events.
This means a 100% removal of ticking for Chests and Signs, the 2 most popular Tile Entities.

Removing the 2 most popular TileEntities also improves unload performance.

This cuts out a massive amount of checks revolving around TileEntity ticking.
Servers with large amounts of TileEntities should see significant improvement.

Finally, this then spreads out the ticking of reduced-rate TileEntities so that they
do not all tick on the same tick, distributing the load of some TileEntities like Chest.
Fix the Spigot Tick Loop and add getTPS API
Only refresh abilities if its changed
Fix furnace bug