[BUGFIX] Deprecate manually assigned templates for Components.

In most circumstances a Component does not have a template or
templateName property. In a component the block passed when calling it
(in a handlebars template) is interpreted as its template, and a
template that was registered as `components/my-component` becomes its
layout. This was recently fixed in 1.2.0 (with the
`container-renderables` feature), but many applications already existed
that manually register their components (via `Ember.Handlebars.helper`).

This change allows usage of `template` and `templateName` properties on
a component, but generates a deprecation warning if you do so.
Merge pull request #3900 from rjackson/fix_manually_registered_components

[BUGFIX] Deprecate manually assigned templates for Components.
[DOC] Add docs for Route#refresh
Merge pull request #4074 from machty/refresh-docs

[DOC] Add docs for Route#refresh
[DOC] Move docs on built in Route actions back into the Route documentation
[BUGFIX] sync router.js: es3-safe `promise.catch()`
Merge pull request #4075 from bmac/move-built-in-actions-back-to-route

Move docs on built in Route actions back into the Route documentation
Merge pull request #4077 from machty/es3-catch

[BUGFIX] sync router.js: es3-safe `promise.catch()`
[DOC][BETA] Improve Em.computed.notEmpty docs to note using array syntax for arrays
[BUGFIX beta] Allow Component to lookup a templateName if specified.

Prior to this change, specifying `templateName` to a component would not
cause that template to be used (since we were overriding the
`Ember.View.template` function with `null`).

This change uses the logic from `Ember.View.template`, which is not
ideal, but I think that these custom docs are pretty important to have.
(They help instruct users that the block passed to a component is
interpreted as its template.)
Merge pull request #4081 from alexspeller/improve-notempty-docs

Improve Em.computed.notEmpty docs to note using array syntax for arrays
Merge pull request #4082 from rjackson/fix_component_template_lookup

[BUGFIX beta] Allow Component to lookup a templateName if specified.
[FEATURE composable-computed-properties] Composable Computed Properties

This feature allows you to combine (compose) different computed
properties together. So it gives you a really nice "functional
programming" like syntax to deal with complex expressions.

Example:
```javascript
var sort    = Ember.computed.sort,
    union   = Ember.computed.union,
    equal   = Ember.computed.equal,
    mapBy   = Ember.computed.mapBy,
    not     = Ember.computed.not,
    compare = Ember.compare,
    and     = Ember.computed.and;

var Person  = Ember.Object.extend(
               napTime: and(
                          equal('state', 'sleepy'),
                            not('thirsty'),
                            not('hungry')
                          )
              );

var person = Person.create({
               state: 'sleepy',
               thirsty: true,
               hungry: false
             });

var Kitties = Ember.Object.extend(
       allKitties: sort(
               union(
                 mapBy('whiteKitties', 'name'),
                 mapBy('blackKitties', 'name')
               ),
               compare
             )
      );
var kitties = Kitties.create({
        whiteKitties: Ember.A([{
                                 name: 'whiskeys'
                               }, {
                                 name: 'bagels'
                              }]),
        blackKitties: Ember.A([{ name: 'little boots' }]),
       });

person.get('napTime') => false
person.set('thirsty', false)
person.get('napTime') => true

kitties.get('allKitties') => ['bagels', 'little boots', 'whiskeys']
```

Kudos to brilliant @hjdivad for his help.