Add state and model functionality to abstract component

Proposal for an API to set and get state from a component. States are just simple object literals that describe the state of the component. Component developers must implement an internal _applyState() function to use the API.

Also adds the ability to set and get a model on a component. Models are dynamic objects that are evented, can have their own API for data, and dictate state to the component.

If this API (or something similar) is approved, I'll write some unit tests. This pull request is meant as a proof of concept. I have a working example I will show at the next sync up.