Dispatch beforechange events and include property name in change events 

Listeners for ol.Object changes should be able to get notified before a property value changes.  To support this, a `beforechange` type event is dispatched.  In addition, both `beforechange` and `change` events include the `key` (property name being changed).