feat: refactor navigation to comply with vuejs/rfcs#150
BREAKING CHANGE: This follows the RFC at https://github.com/vuejs/rfcs/pull/150
Summary: `router.afterEach` and `router.onError` are now the global equivalent of
`router.push`/`router.replace` as well as navigation through the interface
(`history.go()`). A navigation only rejects if there was an unexpected error.
A navigation failure will still resolve the promise returned by `router.push`
and be exposed as the resolved value.