Unit tests for BlockMemory collect and statistics functions
Unit tests for BlockMemory String functions
Rudimentary string support in Compose scripts

- You can declare strings and assign them
- All is hooked up int BlockMemory dynamic allocation and seems to work
- Had to special case some code for "refcounted" types, like strings
  so we addref/release correctly during runtime
- Fixed issue where 2 cell property/fields weren't getting packed
  tightly
- I was starting all items greater than 1 cell in length on the 0th
  cell of a new block
- Now, 2 cell items can be packed together, 2 to a block
- Hope this doesn't violate some principle I was intending
- Only thing I could think of is maybe I wanted pointers to
  be 16 byte aligned, but can't see why that would be useful now
- Renamed "String" to "CmpString" to alleviate collision confusion
  with other string classes
- Will follow this convention with CmpDict and CmpList when I get
  to implement those
- CmpString is sort of a pimpl class to the BlockData/BlockString
- This allows value semantics on the class, which was necessary
  for it to work similarly to other types already supported by the
  strategy for C++ codegen from Compose scripts
- Added BlockMemory support to Entity
- Garbage collection happens at the end of update