Unify observer/observes implementation

This is similar to the implementation of FunctionPrototype.property /
Ember.computed.  Now when the Ember.observer function is modified the
function prototype will already of the correct behavior.
Merge pull request #4821 from rondale-sc/unify_observer_observes_implementation

Unify observer/observes implementation