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.
there's a high possibility of `a_slice.call(arguments)` to be deoptimized.