Change Ember.observer and friends to take function as the final argument

Changes `Ember.observer`, `Ember.immediateObserver`, and `Ember.beforeObserver` to take propertyNames before the function like `Ember.computed` and `Ember.on` do.

It also allows for nicer coffeescript:
```coffeescript
valueObserver: Em.observer "value", ->
  # function body...
```

The old style still works but with a deprecation notice.