Input system rudiments, as well as TaskMaster perf tuning

- Input system is mostly done
- Remaining issue is related to messages and the specificity
  of messages by type
- I chose to have message param types specify message ids,
  and I'm starting to think this was wrong
- The truth is, we should be more loosy-goosy and try to process
  a message based on how many blocks of data are provided
- By making script based message handling type aware, we kind
  of break the flexibility of the model
- Also, specifically with the input system, when a script
  registers a state change listener the script can't specify
  the message id without also specifying the type and this breaks down
- In addition to all of this, TaskMasters now don't totally hog the cores
- They sleep for 10 ms if the frame was under 6 ms
- This is to prevent too much sleeping on windows, where
  the damn time slice is 10ms
- We also now track frame stats on all TaskMasters for the
  last 10, 100, 1000, and 10000 frames
- These stats will be used to load balance tasks when we get to that stuff