feat(ngRoute): add named routes

Request Type: feature

How to reproduce: 

Component(s): ngRoute

Impact: medium

Complexity: medium

This issue is related to: 

**Detailed Description:**

Routes are defined in the same way as regular AngularJS routes except it is possible to supply a name for a route.
If a route is requested it provides a promise that is resolved once navigation is complete, or rejected if another route was navigated to in the same digest.

Links can be defined using the ngGoto directive and should be used instead of ngHref as only name need be used instead of the entire path. It is also possible to effect only a particular named group in the path without updating the rest. For instance:

if you had two routes: `/:user/links` and `/:user/pictures` you could link to pictures like: `<a ng-goto="pictures">pictures</a>` and it would automatically pick up the user you are looking at and link to their pictures (if the current path was `/steve/links` then the href of the link above would be generated `/steve/pictures`)

Links or other DOM elements that define ng-goto also use the ng-click directive to enact the route change, thus supporting ngTouch if it is included and also filling out the href if a link element.

Would resolve:

* angular/angular.js#1791
* angular/angular.js#7091


**Other Comments:**

Named routes provide helper functions for scripted route changes and partial route updating,
components may update specified named groups in a route without knowing the semantics of a
route. A directive, ngGoto, is provided for binding routes to DOM elements such as the A tag.

It is 100% backwards compatible with the existing routing system so could be added in a point release.