Add ChangeSummary functionality to core/observe

* Also add defineProperty, defineProperties, removeProperty
  and removeProperties to core/observe
* General inline documentation
* Increase functional test coverage