[BUGFIX release] Fix #3681.

`Em.arrayComputed` is not presently compatible with lazy CPs. There are a few
issues.

1.  To keep refs up to date, observers stay around as long as the object does.
2.  Those observers can repopulate the cache, but when they do so they fail to
    add dependent keys when the cache was empty.

This commit works around 2. by not removing them in the first place.
Essentially the semantics for `ArrayComputedProperty`s differ from standard
`ComputedProperty`s with regards to laziness.

These observers need to be managed better.  Probably the right thing to do, now
that `recomputeOnce` is no longer necessary, is to:
  1. Fix `Em.computed.sort` to not use `recomputeOnce`;
  2. Fix `Em.arrayComputed` to return a proxy to the cached value;
  3. Teardown array observers when the deps count hits 0.

This will give reduce computed properties semantics much closer to regular
computed properties.  There are two important points to note about this
suggestion:

1.  The cached values would still update synchronously.  This can be improved
    with a lazy array implementation and @wycats's skiplist strategy.
2.  The semantics of an array computed would change such that existing refs
    would only be kept up to date as long as the cache had not been invalidated.
    This is probably fine: the current behaviour is not promised in the
    documentation anywhere and it would be pretty bad practice to keep
    references around rather than `Ember.get`ing them.
[beta] Replaces anonynoums functions with named ones
[DOC beta] Assert if template for {{render}} not found.

Added an assertion if the template name provided to `{{render}}` was not
found.

Two tests were previously not working properly, and have been fixed. They registered
templates as `"blog/post"`, which is never looked up with `{{render}}` (as any
slashes in the name are translated to a period before this lookup
happens).

Resolves #3926.
Assert if {{render}} is called with an unquoted name.

Eventually, `{{render}}` should be similar to `{{partial}}` where an
unquoted templateName is used to do bound parameter lookup.

This PR updates the tests to use quotes, and adds an assertion if an
unquoted param was provided.
add Ember.computed.sum
[BUGFIX beta] Make setPath errors clearer.
Merge pull request #3951 from rjackson/make_set_errors_better

[BUGFIX beta] Make setPath errors clearer.
[FEATURE string-parameterize]
Extract has_element state to your own file
Merge pull request #3953 from gdub22/string-parameterize

[FEATURE string-parameterize]
Merge pull request #3954 from marcioj/extract_has_element

Extract has_element state to your own file
[beta] controller unit-testability: stubbable `controllers` property

Removed the `readOnly`-ness of the `controllers`
CP so that it could be stubbed out for unit tests.
Merge pull request #3956 from machty/stubbable-needs

[beta] controller unit-testability: stubbable `controllers` property
[beta] controller unit-testability: embrace read-only meta
Fix property name in code comment

The property name of `Ember.Array#hasArrayObservers` is incorrect.
Remove unexist param's comment

`Ember.Enumerable#enumerableContentDidChange` allow to be given two arguments.
* `removing`
* `adding`

Not contains `start`.
[beta] better docs for modelFor

I wanted to stress that its main utility was for
accessing models on parent routes rather than
giving the impression that it's useful/meaningful
for grabbing models from any ol route, even if
it's not in the current route hierarchy, which
doesn't really make sense, right?
[beta] Remove unused variable in test
Merge pull request #3959 from pangratz/cleanup_test

Remove unused variable in test
Merge pull request #3957 from tricknotes/fix-code-comment

Fix code comment