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