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