fix($compile): always instantiate controllers before pre-link fns run

Controllers should be always instantiated after compile fn runs, but before
pre-link fn runs. This way, controllers are available to pre-link fns that
request them.

Previously this was broken for async directives (directives with templateUrl).

Closes #3493
Closes #3482
Closes #3514
fix(jqLite): throw when jqLite#off called with 4 args

Closes #3501
fix(docs/error): make minerr ids searchable

Closes #3513
docs(ngModel): clarify docs for NgModelController#

Closes #3498
fix(angular.copy): change angular.copy to correcly clone RegExp

angular.copy previously copied RegExp as an empty object. Change detects
RegExp instance and clones into new RegExp. This change is based on a previous
fix to allow Date to be copied.

Closes #3473
Closes #3474
fix(grunt): ensure all dependent tasks are called for all test task

Close #3421
chore(grunt): fix up the help text for the new test commands

Closes #3421
fix(jqLite): properly detect unsupported calls for on()/off()
docs(jqLite): update the minErr codes for on() and off()
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