Removed type checking from messages, keyboard input working, and more

- Previously, each message's parameters were checked and incorporated
  into the messaeg name
- Thus, a message with hash #foo which had a bool param would actual
  have the hash of #foo__bool
- Only messages in compose scripts worked this way, as messages in raw
  C++ were using whatever hashes specified
- It turned out this was a bad design for a couple of reasons
- Now messages will work as long as the number of blocks matches
  what's expected
- So, for example, a message with a vec3 param will have one block
- As long as an inbound message has the same number as the expected
  blocks, it will get processed with the data sent to it
- In addition to all of this, keyboard input is working
- Still need to support a config file that has keys->action mappings
- And still need to support player ids/keyboard ids
- Changed message namespace from "msg" to "messages" which avoids
  name conflicts with the variable "msg" which is commonly used in
  message handlers
- Compose now accepts simple identifiers as conditional expressions
  thus you can use the traditional c style "if (boolVariable) { ... }"
- Changed "Distant" light to "Directional". "Distant" came from my
  old Lightwave days, but I think most people use "Directional" these
  days
- Entities now have two tasks, the task associated with the Entity
  base class (mTask), and the task associated with the scripte class
  (mScripTask).
- The mTask is the "public" task id known to TaskMasters, and the
  target of messages
- Fixed a couple bugs associated with components and messages