Refactored Registry and how start entity is initialized

- Lots of untested changes here, but all builds so interim checkin
- Now there's a single Registry class for Entities and Components
- Each TaskMaster has its own Registry to avoid any data contention when
  new Entities/Components need to get registered after startup
- Adjusted locations of the system_api_meta code to compose project
- This eliminated a dependency on engine in cmpc, which was leading to
  some nastiness, since it made cmpc depend on the scripts project which
  could fail to build due to bad script generation, and thus prevent the
  compiler from rebuilding successfully.
- startup entity is now initialized in the primary TaskMaster after it
  has been initialized
- Before, it was initialized during system initialization, which was
  broken if the startup entity had an init message handler or wanted to
  queue messages in its init message handler.
- Now, no Entity or Component can exist outside of a TaskMaster, which
  is how it should be.