Initial regionEvents pass

Fixes #1183


## TODO / Ideas
  * [ ] fix deep object equality tests 
  * [ ] handle method def of regionEvent
  * [ ] handle string based regionEvent
  * [ ] handle regionEvents via options
  * [ ] handle `all` based registration
  * [ ] ensure we are not introducing memory leaks
  * [ ] know which region is emitting the event
  * [ ] addRegionEvent
  * [ ] addRegionEvents
  * [ ] removeRegionEvent
  * [ ] removeRegionEvents
we should probably through a descriptive error if `this.regionEvents[eventName]` is not a function.