fix(ngAnimate): do not use jQuery class API

jQeury's class API causes problems with SVG elements --- using jqLite in all cases
prevents issues.

Closes #10024
Closes #10329
feat($$jqLite): export jqLite as a private service

This makes it easy to use jqLite's nicer class API (compared to jQuery) in modules
like ngAnimate.
docs(guide/migration): add info about change that could break isolated directive usage

Closes #10236
docs(ie): remove fixes needed for IE8 since we don't support it now

Closes #10330
Closes #10316
fix(ngModelController): always use the most recent viewValue for validation

This fixes issues where a parser calls $setViewValue. This is a common
strategy for manipulating the $viewValue while the user is entering
data into an input field.

When the $viewValue was changed inside the parser, the new viewValue
would be committed, parsed and used for validation. The original parser
however would run after that and pass the original (outdated) viewValue
on to the validators, which could cause false positives, e.g. for
minlength.

Fixes #10126
Fixes #10299
docs(guide/forms): enhanced form examples to utilize $touched

The "Binding to form and control state" example now makes use of
control states that were introduced in 1.3.
For example, users are now informed of validation requirements upon
clicking 'Save'.

Closes #10066
chore(travis): enable both SauceLabs and BrowserStack

Setting env var `BROWSER_PROVIDER` to `browserstack` or `saucelabs`
determines which browser provider will be used.

Switch unit tests (`JOB=unit`) to use BS.
Does not affect e2e builds (`JOB=e2e`).

Switch to Karma with Socket.io 1.x, which solves some issues(*) with BS.
Thus removing `config.transports` as it is not used anymore
(Socket.io 1.x starts with polling and tries to upgrade if available).

(*) folks from BS were fiddling with socket.io configuration to get it stable.
See https://github.com/dhimil/karma/commit/4c04011850bf66a8a7556cd76ad662c568399481
This is not necessary with Socket.io 1.x.