Improve the Spigot Tick Loop

Improves how the catchup buffer is handled, allowing it to roll both ways
increasing the effeciency of the thread sleep so it only will sleep once.

Also increases the buffer of the catchup to ensure server stays at 20 TPS unless extreme conditions
Timings v2
Fix TPS measurement and add getTPS API

Previous implementation did not calculate TPS correctly.
Switch to a realistic rolling average and factor in std deviation as an extra reporting variable

Thanks to @chickeneer for the math wizardry for figuring this out!