String support complete for the time being

- Wow... glad that's over
- You can now send strings in messages (and any other BlockMemory dynamic
  type but none other exist yet)
- To make it all work, I had to re-implement message passing/processing
  in the cpp code gen, which was never really working correclty
- We now queue all messages from tasks and don't shortcut the queue
  with StackMessageWriters when targeting the self task.
- It occurred to me that it was essential to queue, otherwise messages
  will arrive out of order depending on whether the target is self
  or other, because with BlockMemory messages we always queue
- Block packing algorithm no longer packs BlockMemroy types in message
  packing
- They're still packed as their 2 cell pointer space for properties
  and fields declared on a Component or Entity
- Added methods to read/write CmpString types to message queues
- Other BlockMemory types in future just need to implement a similar
  duck type and they should fall into place for message passing.
- Added "available()" method to message accessors since it's nice
  to be able to runtime check available space and not just depend
  on debug asserts.
- Message processing is now looser when it comes to checking for
  task existence.
- You can senda message to a "non-existent" task, whereby the message
  gets queued on the currently active TaskMaster
- This behavior is necessary to support creating a task, inserting it,
  and immediately sending it a message from
- The insert_task message doesn't get processed until the next frame,
  so your message to the task has to be allowed to go through even
  though it's to a non-tracked target
- The TaskMaster will try to look it up one more time in any case
  before it processes it
- If still not found, it will just drop the message, and we currently
  log an info message indicating this has happened
- It may be that this is super commona and I'll remove the log
  statement, time will tell
Support for set property syntax, e.g. "@task#prop = 5"

- Found a reasonably elegant way to do this
- During parsing of PropertySet expressions, we generate
  an equivalent MessageSend ast, and place that in the
  parse tree, to be code-gen'd like any other MessageSend.