fix($location) don't rewrite location when clicking on "javascript:" or "mailto:" link

Previously, absent a specified target attribute, when clicking on an anchor tag with an href beginning
with either "javascript:" or "mailto:", the framework would rewrite the URL, when it ought not to.

With this change, the browser is prevented from rewriting if the URL begins with a case-insensitive match
for "javascript:" or "mailto:", optionally preceeded by whitespace.

Closes #8407
Closes #8425
Closes #8426
docs(ngMockE2E): remove repeated word

Closes #8411
docs($http): add link to `$http.path()`

Closes #8424
docs(faq): remove the mention of IE8
docs(error/$injector/unpr): inadvertently redefining a module can cause error

Closes #8421
feat(jQuery): upgrade to jQuery to 2.1.1

The data jQuery method was re-implemented in 2.0 in a secure way. This made
current hacky Angular solution to move data between elements via changing the
value of the internal node[jQuery.expando] stop working. Instead, just copy the
data from the first element to the other one.

Testing cache leaks on jQuery 2.x is not possible in the same way as it's done
in jqLite or in jQuery 1.x as there is no publicly exposed data storage. One
way to test it would be to intercept all places where a jQuery object is created
to save a reference to the underlaying node but there is no single place in the
jQuery code through which all element creation passes (there are various
shortcuts for performance reasons). Instead we rely on jqLite.cache testing
to find potential data leaks.

BREAKING CHANGE: Angular no longer supports jQuery versions below 2.1.1.
docs(ngSubmit): add link to `form` docs to discourage double submission

Closes #6017
docs($compile): fix title level for multiElement

Closes #8444
chore(perf): add event delegation benchmark
feat(form): Add new $submitted state to forms

The $submitted state changes
- to true when the form is submitted
- to false when $setPristine is called on the form

A .ng-submitted class is added to the form when $submitted=true

Closes #8056
fix($parse): one-time binding for literal expressions works as expected

Meaning the watcher is only removed when all the properties of the object, or
all the elements of the array, are defined.

Closes #8209
chore(travis): rename fetch_bundle script and make it not abort a travis build if it fails

This is useful when the npm-bundle-deps server isn't running,
when the tar never gets served (there's a default timeout on the request),
or when the served file isn't a valid tar.
perf(input): prevent additional $digest when input is already touched

@kevinjamesus86 noticed that the input control would trigger a $digest
cycle every time it was blurred, https://github.com/angular/angular.js/commit/adcc5a00bf582d2b291c18e99093bb0854f7217c#commitcomment-7129512.

After the control is in a $touched state, other $digest cycles are
unnecesary.

Closes #8450
fix(select): ensure that at least one option has the `selected` attribute set

Using `prop` to set selected is correct programmatically but accessibility
guidelines suggest that at least on item should have the `selected` attribute
set.

Closes #8366
Closes #8429
feat(ngMock): allow override of when/expect definitions

Closes #5766
Closes #8352
docs($resource): clarify the meaning of `@` in `paramDefaults`

Closes #8457
perf($q): move Deferred and Promise methods to prototypes

NOTE: Deferred doesn't get all the advantages of moving methods to the prototype,
since the constructor binds instance methods to "this" to support unbounded execution.

Closes #8300
docs(form.js): fix ngdoc tags for `$setSubmitted`

See 108a69be17df5884d026c57b2be3235c576250fe

Closes #8464
docs($compile): event handlers are not copied from the replaced node
docs(ngController): global controller fns disabled by default

Update doc to reflect 3f2232b5a181512fac23775b1df4a6ebda67d018,
which disabled use of global controller constructors (by default).

Closes #8466