docs(compile): document $attrs.$normalize

Closes #10345
refactor(ngAria): remove local camelCase method

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

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

This does not affect the build as all jobs are set to use SauceLabs.

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.
chore(travis): clean up browserstack/saucelabs scripts
chore(grunt): remove unused code
fix(http): preserve config object when resolving from cache

Fixes #9004
Closes #9030
docs(ngView): remove multiple position: relative

Closes #10363
docs(guide/controllers): Just a typo

Gingerbreak would break testing. :)

Oh my gosh he's right, it totally w/ould. That is so embarrassing!

Closes #10353
docs(contributing): correct push -f command

`git push -f` needs branch specification

In all cases, please consult the git manpages before consulting angular's contributing guide
when you need help with git, thx ^^

Closes #10356
chore(changelog): add test for addition of trailing newline

Adds tests for the functionality added by #9550.

Closes #10358
docs($interval): correcting example code indentation

Bueno!

Closes #10372
docs(CHANGELOG): add v1.3.6 changes

Closes #10376
docs(CHANGELOG.md): remove the `closes ...` from 2dc34a96 notes
feat($compile): add support for ng-attr with camelCased attributes

SVG attributes are case sensitive and some have upper case letters in them
This change ensures that we can identify these, when being used with the `ng-attr`
directive, by encoding upper case letters with a preceding underscore.

For example to apply `ng-attr` to the `viewBox` attribute we could write
`ng-attr-view_box` - or any of the other variants: `ng:attr:view_box`,
`data-ng-attr-view_box`, etc.

Closes #9845
Closes #10194
docs(guide/Expressions): fix grammar, flow and punctuation

Closes #10384
docs($resource): fix typo

Closes #10383
refactor($http): drop superfluous argument to sendReq

Closes #10360
refactor($http): avoid using closure vars in serverRequest fn

Closes #10361
fix(orderBy): do not try to call valueOf/toString on `null`

8bfeddb5d671017f4a21b8b46334ac816710b143 added changes to make relational operator work as it
normally would in JS --- unfortunately, this broke due to my failure to account for typeof null
being "object".

This refactoring attempts to convert object values to primitives still, in a fashion similar to
the SortCompare (and subsequently the ToString() algorithm) from ES, in order to account for `null`
and also simplify code to some degree.

BREAKING CHANGE:

Previously, if either value being compared in the orderBy comparator was null or undefined, the
order would not change. Now, this order behaves more like Array.prototype.sort, which by default
pushes `null` behind objects, due to `n` occurring after `[` (the first characters of their
stringified forms) in ASCII / Unicode. If `toString` is customized, or does not exist, the
behaviour is undefined.

Closes #10385
Closes #10386
style(testability): throw a more informative error when getting testability

The angular.getTestability method requires an element parameter to determine
which Angular application to use. Currently, if the element provided is
undefined or outside of an Angular app, the error message is 'cannot read
property get of undefined'. Improving to a more relevant error message.