Add alias descriptor

Introduces a saner descriptor for aliasing properties via Ember.aliasProperty. Differences with Ember.computed.alias:

- It's not a computed property so there's no caching involved.
- get/sets are passed straight through.
- as soon as the alias is watched, it registers itself as a dependency of the alt key in meta.deps. This is in contrast to watching CPs, who do not register themselves until they have been consumed.

A couple hooks were reintroduced. When a key is watched for the first time a `willWatch` hook is fired on the descriptor, and when the last watcher is removed a `didUnwatch` hook is fired.

Example:

```javascript
Ember.Object.extend({
  foo: "FOO",
  bar: Ember.aliasProperty('foo')
});
```

- [ ] Review
- [ ] Make sure it fixes #5112
- [ ] Docs

/cc @krisselden @stefanpenner
needs to be guarded by `meta(obj).watching[keyName]`