Changed scheduler to use executor service
- tasks are now Runnables
- ticks are still in stages
- task factories are used to generate tasks
- tasks are submitted and then the main thread waits until all are executed for a stage
- TickStage system has execution thread dynamically updates, rather than set as a final
use 2x cores for main game logic
Use batch in column (1 * 4 * 1)
Check if batch already in toUpdate queue
Clean GPU buffer when release batch
Don't reallocate gpu buffer if already larger
Load Shader of font/texture before use it.
Check OpenGL error each frame
Revert "Check OpenGL error each frame"

This reverts commit 0602e65f74bd27b5b5cf0408e55db6866364f797.
GL11 deprecated, GL30 use interleaved buffer