fix(ngSanitize): ensure `html` is a string in htmlParser()

Previously, $sanitize(nonString) would throw. Now, the type is converted to a string before any work
is done.

Closes #8417
Closes #8416
revert(select): avoid checking option element selected properties in render

This reverts commit dc149de9364c66b988f169f67cad39577ba43434. That commit fixes a bug caused by
Firefox updating `select.value` on hover. However, it
causes other bugs with select including the issue described in #7715. This issue details how
selects with a blank disabled option skip to the second option. We filed a bug
with Firefox for the problematic behavior the reverted commit addresses
https://bugzilla.mozilla.org/show_bug.cgi?id=1039047, and alternate Angular fixes are being
investigated.

Closes #7715 #7855
test(select): add test against updating selected property on digest with no change event

Commit dc149de9364c66b988f169f67cad39577ba43434 was reverted to fix regressions #7715 and #7855.
This commit introduced this test case and a corresponding fix for preventing the update of the
selected property of an option element on a digest with no change event. Although the previous fix
introduced regressions, the test covers a valid issue and should be included.
test(select): add test cases for selects with blank disabled options

An earlier commit dc149de9364c66b988f169f67cad39577ba43434 caused an error where the first option of
a select would be skipped over if it had a blank disabled value. These tests demonstrate that with
that commit in place, blank disabled options are skipped in a select. When the commit is reverted,
the correct behavior is seen that the blank disabled option is still selected in both selects
marked with required and those that have optional choices.

Relates to #7715
test(select): add test of updating the model because of ng-change

A regression #7855 was introduced by
https://github.com/angular/angular.js/commit/dc149de9364c66b988f169f67cad39577ba43434
This test ensures that reverting that commit fixes this regression.
In the regression, changes to a bound model in ng-change were not propagated back to the view.

Test for #7855
test(select): add extra expectations and comments for clarity
fix(select): do not update selected property of an option element on digest with no change event

The `render()` method was being invoked on every turn of the digest cycle,
which was inadvertently updating the DOM even when a `change` event had
not been triggered.

This change only calls the `render()` method when `ctrl.$render()` is called,
as part of the NgModelController` lifecycle and when the `modelValue` has
significantly changed.

Closes #8221
Closes #7715
refact(select): don't recreate selectedSet on every digest loop

In the case of a "multiple" select, the model value is an array, changes
to which don't get picked up by NgModelController as it only looks for
object identity change.

We were rebuilding the `selectedSet` (a hash map of selected items) from
the modelValue on every turn of the digest. This is not needed as we can
simply use `$watchCollection` directly on the `$modelValue` instead.
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(error/$injector/unpr): inadvertently redefining a module can cause error

Closes #8421
docs(ngSubmit): add link to `form` docs to discourage double submission

Closes #6017
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.
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

Conflicts:
	test/ng/directive/selectSpec.js
docs($resource): clarify the meaning of `@` in `paramDefaults`

Closes #8457
test(select): relax test for IE8 bug

There is a bug in IE8 (http://support.microsoft.com/kb/829907 and
http://yuilibrary.com/forum-archive/forum/viewtopic.php@p=14826.html):
when you clone an `<option>` element the selected attribute on the options
can become invalid.

This is not relevant to the proper behaviour of the `select` directive
since it uses `prop` not `attr` to store the selected status of each
option.

This test is only interested in there being at least on option with
the `selected` attribute, for conformance to accessibility guidelines.
So we can safely relax the test to check this rather than concerning
ourselves with which option actually has this attribute.

Fixes 79538afd7bd730d49be8eb988a3a54848d8ddaec
Closes #8465
docs(CHANGELOG.md): add missing breaking change from 1.3.0-beta.14
docs($compile): fix typo 'default' spelling

Change spelling of 'defualt' to 'default'

Closes #8476
docs(guide/directive): explain how to require multiple controllers

Closes #8524