refactor($parse): change 'this' to a $parse keyword instead of scope field

BREAKING CHANGE:
- $scope['this'] no longer exits on the $scope object
- $parse-ed expressions no longer allow chaining 'this' such as this['this'] or $parent['this']
- 'this' in $parse-ed expressions can no longer be overriden, if a variable named 'this' is put on the scope it must be accessed using this['this']

Closes #9105
perf($rootScope): moving internal queues out of the Scope instances

Closes #9071
test($http): fix typo in spec name

'applyAapply' -> 'applyAsync'.

Closes #9323
docs(CONTRIBUTING.md): Added a not about type

It's important that we let people use the GitHub editing interface without being 100% strict about how to name the commit changes. Otherwise, it is basically a barrier to entry and highly discouraging for new people who may just be trying to fix a spelling error. Since it is possible for contributors to edit the commit message before merging it into master, for people who are new to the commit styling system, we should be lenient about minor infractions like forgetting to put docs: in front of a message. 

CF: https://github.com/angular-ui/bootstrap/pull/2635#issuecomment-57117579
refactor($scope): prevent multiple calls to listener on `$destroy`

Prevent isolated scopes from having listeners that get called
multiple times when on `$destroy`
fix($compile): Resolve leak with asynchronous compilation

Stop an asynchronous compilation when this is performed on an
already destroyed scope

Closes #9199
Closes #9079
Closes #8504
Closes #9197
chore(e2e): bump protractor to version 1.3.1
chore(npm-shrinkwrap): update to dgeni-packages 0.10.0
fix(select): make ctrl.hasOption method consistent

Prior to this fix, options added to a select by ngOptions would not cause
`selectCtrl.hasOption` to return `true`

Closes #8761
docs(CHANGELOG.md): put `<base>` in codeblock

Prevent the tag from being processed (and not rendered). Thanks @davidlehn.

Closes #9331
fix($compile): get $$observe listeners array as own property

Prevent accidentally treating a builtin function from Object.prototype as the binding object, and thus
preventing the compiler from throwing when using attribute binding names which match a property of the
Object prototype.

Closes #9343
Closes #9345
docs($compile): add header to example
docs(guide/compiler): change span to block element in draggable example

The draggable example does not work as expected in Chrome (37.0.2062.124 m).
The span disappears when dragged beyond what appears to be a small area.
Changing the span to a block element (with a width of 65px) resolves this issue.
An alternative solution would be to change the span to a div.
docs($compile): fix a broken link
docs(readme): fix formatting
docs(guide/concepts): improve readability
chore(ngCsp): add e2e tests

Also changes `connect:devserver` and `connect:testserver` to conditionally serve files with csp headers when the path contains `.csp` somewhere.

Closes #9136
Closes #9059
docs(minerr/unpr): note that ctrls cant depend on other ctrls
docs(guide/forms): improve example

When explaining ng-model-options, there's no print of `user.data` to show
the difference between the default behaviour and updateOn: 'blur'
fix(compile): sanitize srcset attribute

Applies similar sanitization as is applie to img[src] to img[srcset],
while adapting to the different semantics and syntax of srcset.