feat($q): add shorthand for defining promise error handlers

Now we can instead this

    promise.then(null, errorHandler)

with this

    promise.catch(errorhandler)

Closes #2048
Closes #3476
chore($compile): remove bogus scope/controller check

We already have the same test in $controller which is called just a few lines above

Closes #3517
docs(httpBackend): update documentation for expect methods

`expect` methods can receive an Object as the data parameter, which was
undocumented.
fix(docs-bootstrap): Removed injector from bootstrapped docs samples

This is necessary to make e2e tests pass for implementing #3411. At present, the docs are violating the rule being enforced by double-bootstrap prevention.
docs(ngModel): validators should return undefined for invalid values.

Closes #3525
docs($compile): update directive type signature

To avoid "Argument type Array is not assignable to parameter type function" validation error  When using the minifcation-safe array style

(eg .directive('myDirective', ['$http','$timeout','$compile', function($http,$timeout $compile).... )

Closes #3392
chore(ngMobile): rename module ngTouch and file to angular-touch.js

BREAKING CHANGE: since all the code in the ngMobile module is touch related,
we are renaming the module to ngTouch.

To migrate, please replace all references to "ngMobile" with "ngTouch" and
"angular-mobile.js" to "angular-touch.js".

Closes #3526
fix(re-bootstrap): Throw an error when bootstrapping a bootstrapped element.

Nothing would prevent a user from accidentally calling angular.bootstrap on an element that had already been bootstrapped. If this was done, odd behavior could manifest in an application, causing different scopes to update the same DOM, and causing debugger confusion.

This fix adds a check inside of angular.bootstrap to check if the passed-in element already has an injector, and if so, will throw an error.
chore($q): rename `promise.always` to `promise.finally`

BREAKING CHANGE: the `always` method has been renamed to `finally`.

The reason for this change is to align `$q` with the Q promises library,
despite the fact that this makes it a bit more difficult to
use with non-ES5 browsers, like IE8.

`finally` also goes well together with `catch` api that was added to
$q recently and is part of the DOM promises standard.

To migrate the code follow the example below:

Before:

$http.get('/foo').always(doSomething);

After:

$http.get('/foo').finally(doSomething);

or for IE8 compatible code:

$http.get('/foo')['finally'](doSomething);
style(minerr): prefer component name as namespace

Closes #3527
fix(ngInclude): ensure ngInclude is terminal and uses its own manual transclusion system
fix(ngView): ensure ngView is terminal and uses its own manual transclusion system
chore(ngAnimate): fix incomplete animation test
fix(ngAnimate): make sure that the class value passed into addClass/removeClass is the base class string value
fix($compile): correct controller instantiation for async directives

This fixes regression introduced by #3514 (5c560117) - this commit is being
reverted here and a better fix is included.

The regression caused the controller to be instantiated before the isolate scope
was initialized.

Closes #3493
Closes #3482
Closes #3537
Closes #3540
feat($route): express style route matching

Added new route matching capabilities:
  - optional param
Changed route matching syntax:
 - named wildcard

BREAKING CHANGE: the syntax for named wildcard parameters in routes
    has changed from *wildcard to :wildcard*

    To migrate the code, follow the example below.  Here, *highlight becomes
    :highlight*:

    Before:

    $routeProvider.when('/Book1/:book/Chapter/:chapter/*highlight/edit',
              {controller: noop, templateUrl: 'Chapter.html'});

    After:

    $routeProvider.when('/Book1/:book/Chapter/:chapter/:highlight*/edit',
            {controller: noop, templateUrl: 'Chapter.html'});
fix($location): don't initialize hash url unnecessarily

After a recent refactoring using $location in the default hashbang mode would result
in hash url being initialized unnecessarily in cases when the base url didn't end
with a slash.

for example http://localhost:8000/temp.html would get rewritten as
http://location:8000/temp.html#/temp.html by error.
chore($location): drop bugus error

we can never get to this state, so dropping the error
docs(minErr): add location/ihshprfx
docs(minErr): add location/isrcharg docs