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.
@rondale-sc - You can use the same technique as https://github.com/emberjs/ember.js/commit/c6f8bb1798946ae1278b7f4101fccca8ea02c30c, basically just iterate and create your own copy:

```javascript
var length = arguments.length;
var args = new Array(length);
for (var x = 0; x < length; x++) {
  args[x] = arguments[x];
}
```