Compose based entities can be created and are being managed/updated

- Adopted convention that "start" entity is the one to start when the engine starts.
- We'll probably add a command line option to specify a different start entity.
- The start entity is responsible for creating/initializing all other entities in the game/level.
- In this way, a level can be expressed as a compose script, and it gives a beautiful consistency to the the system.
- When the in game editor comes to exist, saving a level will save a compose script for the start entity
- Replaced static entity/component registration with a series of functions.
- Since entities/components are defined in a separate lib, there is no good way to use static initialization for this.
- Generated entities/components define a registration function, and a call to it is added to registration.cpp inside src/scripts.
- Fixed some indentation (minor) issues in generated messages.
- Corrected some block count subtle bugs.  We weren't allocating enough blocks for the header, and some of the asserts in block accessing were incorrect.
- It's kinda sorta feeling like a working engine.
We now correctly clear mOwnedTask* structures when the fin message is
processed.

We weren't doing this before, causing entities to get updated after fin
was processed and they had all deleted themselves.
Added support for symbol definitions (local variables) to compose code generator.