Branch/set get property refactor

This branch is mainly a refactor of createProperty, initializeProperty, setProperty, and getProperty to get as much code reuse as possible, and to try to make the code read as clearly as possible for someone new coming to look at it.

It also changes the behavior of the view event handlers.  Now, createProperty checks to see if a view has implemented createdProperty before calling it.  If not, it checks initializedProperty.  If it doesn't have that, it calls satProperty.  Likewise, initialize checks initializedProperty, and if that doesn't exist, calls satProperty.  Set property continues to call satProperty like always.  This new behavior allows an app developer to just listen for satProperty and know that the view will be notified of *any* changes made to that property, whether they be creates, initializes, or sets.  (Beware, if the view implements createProperty for a different property, createProperty will call createdProperty for *all* properties).

@allisoncorey and @jessmartin, would you mind code reviewing?