Base class with pub-sub and observers for JS object properties using ECMA5 getters/setters

This provides a flexible base class and extension mechanism for building JS objects which can have properties which
listen for changes on other properties. Inspired by Ember.JS observers
it aims to be smaller in scope and functionality and thus more lightweight.

For a given property which is depended upon by other properties and methods, its dependents only get notified if its
value is changes from what it was previously. Thus, if a computed property's newly computed value is still the same as the current
value then no further notifications are triggered.