[BUGFIX beta] Handle beta branch builds properly.

The initial implementation of the `FORCE_BRANCH` flag did not
properly account for all scenarios.  This attempts to fix an
issue with builds of commits pushed directly to the beta/stable
branches.
Upgrade RSVP

- instrumentation hooks for tooling
- still promise/a+ 2.0.2 compliant
- adds support for finally/catch
- adds documuncation
- perf
- cleanup
- several fixes
- no longer brings it's own async, as we just use the run-loop
[NICETHING beta] assert `needs` incompatibility with periods

needs isn't compatible with periods, because ultimately
you're going to need to call get('controllers.foo.bar')
(assuming needs: 'foo.bar'), which doesn't and can't
do what you want.
[BUGFIX beta] New error stack trace

Related [#67](https://github.com/tildeio/router.js/pull/67).
[BUGFIX beta] sync router.js

Fixes #3810
[BUGFIX beta] make routePath smarter w/ stacked resource names

Logging will make more sense when stack route resource
names are used.

Fixes #3853
[NICETHING beta] use Ember.inspect in debugger helper

Followup to

40a1d50dc1db7d528edeb5bc35332279aca8ac09

should have used this in the first place.
[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.
[BUGFIX beta] Use a bundler cache to speed builds.
Added warning when using deprecated helpers and removed bindAttr/linkTo references
[BUGFIX beta] make routePath smarter w/ stacked resource names

Logging will make more sense when stack route resource
names are used.

Fixes #3853
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.
[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.
[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
[BUGFIX beta] Ensure {{link-to}} path observers are reregistered after render.

Prior to this change we called `registerObserver` on `init` so that `this.rerender` was triggered
when the link text changes (see [here](https://github.com/emberjs/ember.js/blob/3a7f4ae7c0be07f064f31e1df3f06d38ff866f4c/packages/ember-routing/lib/helpers/link_to.js#L192-L196)).

This worked properly to trigger the first `rerender`, but since `registerObserver` tears down the observer on `willClearRender`
(see [here](https://github.com/emberjs/ember.js/blob/3a7f4ae7c0be07f064f31e1df3f06d38ff866f4c/packages/ember-views/lib/views/view.js#L2273-2275)) and the observers
were not set back up, we would only handle a single change.

This change ensures that the observers are setup after each time the view is rerendered.
[BUGFIX beta] Do not attempt to serialize undefined models.

If a routes model is undefined do not attempt to serialize it.

Previously, this would cause an error like: `Cannot call get with 'id'
on an undefined object.`.
[BUGFIX beta] Make setPath errors clearer.