larger updates to event system

- there is no longer the concept of an event queue. events are now
  triggered in-place (via `trigger`) and do not enter a shared queue.
  they just process on the spot. this makes it so running an event in
  the render thread GUARANTEES that the bindings being called will also
  be run in the render thread (same for game thread)
- moved processing of render events into render thread. things like
  render-step, mouse-position, key-down, etc (anything that is
  window-related). these all now fire *in the render thread* whereas
  before they were just dumbly forwarded to the game thread (which is
  stupid).
- updated the code everywhere to be aware of the render vs game thread
  event change.
- update the code everywhere to use in-game/in-render instead of
  enqueue. enqueue might go away soon (or at least be hidden from the
  API).
- there are probably other changes here and there, but these are the
  main ones.