Feature: Behaviors

This moves game object logic out of `GameObjects` children, and into children of `Behavior`. This does a number of things for us:

* `GameObject.createFromYaml` becomes much much simpler.
* An object can have multiple `Behavior`s on it.
* A `Behavior` can be added to an object after it is initialized.

Down sides:
* This is very much a code breaking change. You can see the required changes to Sample Game [here](https://github.com/Circular-Studios/Sample-Dash-Game/compare/feature;Behaviors).