feat(formController): add $setUntouched to propagate untouched state

Closes #9050
chore(docs): refactor the docs app search for better bootup time

This commit refactors how the search index is built. The docsSearch service
is now defined by a provider, which returns a different implementation of
the service depending upon whether the current browser supports WebWorkers
or now.

* **WebWorker supported**: The index is then built and stored in a new worker.
The service posts and receives messages to and from this worker to make
queries on the search index.

* **WebWorker no supported**: The index is built locally but with a 500ms
delay so that the initial page can render before the browser is blocked as
the index is built.

Also the way that the current app is identified has been modified so we can
slim down the js data files (pages-data.js) to again improve startup time.

Closes #9204
Closes #9203
feat($location): add ability to opt-out of <base/> tag requirement in html5Mode

This feature allows disabling Angular's requirement of using a <base/> tag
when using location in html5Mode, for applications that do not require
using $location in html5Mode in IE9. To accomplish this, the $locationProvider.html5Mode 
method has been changed to accept a definition object which can optionally set a 
requireBase property to false, removing the requirement of a <base> tag being present
when html5Mode is enabled.

BREAKING CHANGE: The $location.html5Mode API has changed to allow enabling html5Mode by
    passing an object (as well as still supporting passing a boolean). Symmetrically, the
    method now returns an object instead of a boolean value.

    To migrate, follow the code example below:

    Before:

    var mode = $locationProvider.html5Mode();

    After:

    var mode = $locationProvider.html5Mode().enabled;

Fixes #8934
feat(input): support dynamic element validation

Interpolates the form and form control attribute name, so that dynamic form controls (such as those
rendered in an ngRepeat) will always have their expected interpolated name.

The control will be present in its parent form controller with the interpolated property name, and
this name can change when the interpolated value changes.

Closes #4791
Closes #1404
docs(changelog): add release notes for 1.3.0-rc.3
chore(docs): show error 404 without partial failing

We can move the test back into the main describe as it no longer causes an
error message to be logged
fix(ngModel): do not parse undefined viewValue when validating

Previously, if a viewValue had not yet been set on the element, it could incorrectly produce a
parse error.

This change prevents the parsers from running if a view value has not yet been committed.

Closes #9106
Closes #9260
test(ngModel): rename test to better reflect what is being tested

I meant to do this in before 92f05e5a5900713301e64373d7b7daa45a88278b landed, sorry u_u
chore(docs): ensure DI annotations are in place
chore(docs): minify javascript
chore(protractor): annotate $animate to allow tests to run under strict-di
chore(docs): improve logo rendering performance
chore(docs): remove unused code
test(input): test that number validates with unspecified viewValue

Adds an additional test verifying that a number which is not required will validate successfully
when ngModelCtrl.$validate() is called. Before 92f05e5 landed, this would have failed because of
a parse error.

Closes #9193
docs(guide/index): add book AngularJS: Novice to Ninja

I wrote a book on AngularJS (AngularJS: Novice to Ninja).

Closes #9293
perf(benchmark): add ngBindOnce benchmarks to largetable-bp
chore(Angular): drop support for Opera < 15

Closes #8589
docs(guide/accessibility): explain ngAria
chore(docs): fix links to github

Closes https://github.com/angular/code.angularjs.org/issues/13
feat($compile): optionally get controllers from ancestors only

Implement option to strengthen require '^' operator, by adding another '^'.

When a second '^' is used, the controller will only search parent nodes for the
matching controller, and will throw or return null if not found, depending on
whether or not the requirement is optional.

Closes #4518
Closes #4540
Closes #8240
Closes #8511