Switch to thread-per-world design for ticking

WorldScheduler manages world threads, and is triggered by the scheduler.

All Bukkit API access still goes through scheduler thread.
EventFactory syncs events to main thread (except for events marked as async)

Scheduler task execution has been completely restructured:
- No more separate GlowWorker
- Async tasks are run through an ExecutorService, not individual threads
- No more separate newTasks, oldTasks, and tasks. It's now a single ConcurrentHashMap.
- Tasks are executed *before* world tick, not after.

More thread-safeing is left to be done, which will allow more to be
placed on alternate threads.