Improved error reporting for Compose compiler, language refinements,
transform refinements

- Compose compiler no longer blows up with PANICs all over the place
- Errors are printed and compiler exits with error code
- First error causes exit, so we should refine to handle multiple
  errors before quitting, but that can come later
- Initializers now use '{' '}' instead of parens
- E.g. vec3(1.0, 1.0, 1.0) is now vec3{1.0, 1.0, 1.0}
- This brings the syntax more in line with modern C++ and will be used
  with the upcoming language enhancements that allow for runtime creation
  of Entities and Components.
- Refined local vs. world transforms of entities
- Refined parent/child handling of entities, particularly in regards
  to transforms
- More work to do here, but this is a good stopping point to checkin
  the interim work
- Materials now store colors as Vec4's instead of Colors (u32s)
- This removes conversion required when sent to the GPU
- Added shapes compose scripts, just Box for now
- Every shape will be defined as an Entity and will be easily
  instantiated from a compose script
- Those language featuers allowing that flexibility are forth coming