[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.
ensure all public API's of the container are correctly normalized and validated.

Also ensure internal usages are not validated nor re-normalized.
Updating run loop documentation

Backburner was updated and the documentation for
throttle/debounce/cancel needs to be updated to reflect
new functionality
Remove `RSVP.Promise#fail` in favor of `catch`.


After discussion with @wycats and @domenic, it was decided we should remove
`fail` before it enters an official release

- es3 users should use the ['catch'] syntax
- plans are to add a transpiler for people to es5 -> es3 (for finally and catch) etc.
[NICETHING beta] Name anon LinkView CPs

This gets rid of lots of (anonymous function)s i've
been running into lately in the call stack.
Merge pull request #3902 from stefanpenner/remove-promise-fail

Remove `RSVP.Promise#fail` in favor of `catch`.
Merge pull request #3904 from machty/linkview-cp-names

[NICETHING beta] Name anon LinkView CPs
Merge pull request #3889 from kingpin2k/update_backburner_functionality

Updating run loop documentation
[BUGFIX beta] Use a bundler cache to speed builds.
Merge pull request #3907 from rjackson/use_cache

[BUGFIX beta] Use a bundler cache to speed builds.
Use imported handlebars before global Handlebars

Prioritizing the global Handlebars causes problems in environments with multiple versions of Handlebars. One should be able to import a desired version.
[beta] Adds a named function
[beta] name anon helper fns

Again, this is all actively driven by sad debugging
experiences. Not everything needs a name but debugging
helper invocations is common enough.
[beta] better link-to error for invalid dest routes

The previous way always appended '.index' to the
invalid route name you supplied. This new way
is way more clear.
Merge pull request #3909 from twokul/error-stack-bubbleEvent

Adds a named function
adds more tests

Conflicts:
	packages/container/tests/container_test.js
Merge pull request #3885 from stefanpenner/tighten-up-container

ensure all public API's of the container are correctly normalized and va...
[beta] Reintroducing nice unhandled action error

I'd removed a similar assertion message in 160a41cf4b because
it wasn't totally correct, but this version
correctly mentions that the error could have
originated from a bubbling controller action.
Merge pull request #3910 from aaronshaf/patch-1

Prioritize imported Handlebars over global Handlebars
[BUGFIX beta] Ensure that the rootURL is available to location.

The refactoring in #3752 caused the rootURL to not be passed at
initialization time to the location implementation. This change reverses
that by injecting the `router:main` into the newly created location
instance.

The tests were also refactored:

* Split HistoryLocation tests out from the router basic tests.
* Ensure that we are testing the right thing in router tests (ensuring
  that the rootURL is available to the location implementation).
* Fixed issue with existing rootURL check that made the test pass
  due to the fact that the default rootURL (`/`) just happens to be the
  rootURL while running the test via `rackup`.

Resolves: https://github.com/emberjs/ember-dev/issues/115