test($compile): use `trim` helper
fix(ngModel): do not dirty the input on $commitViewValue if nothing was changed

Calling `$commitViewValue` was was dirtying the input, even if no update to the view
value was made.
For example, `updateOn` triggers and form submit may call `$commitViewValue` even
if the the view value had not changed.

Closes #7457
Closes #7495
docs(tutorial): fix link to bower in step 12

Muchas gracias! \o/

Closes #7507
docs(guide/$location) remove duplicate 'Crawling your app' section

The "Crawling your app" section was duplicated.
I just removed the duplication and moved the section to the 'Caveats' section.

Closes #7244
perf($interpolate): optimize value stringification

previously we stringified numbers via toJson which was expensive, I optimized
the code so that toJson is invoked only if really necessary

Closes #7501
docs(guide): correct order of directive arguments within the animations chapter

Closes #7482
chore(travis): use SauceConnect v4

See https://saucelabs.com/docs/connect
chore(travis): use latest selenium on SL
chore(travis/e2e): update Chrome to v34

See 28ef2637c111d2940d2062c3cc8be29e7984f35a
chore(travis/e2e): use Chrome on Mac

Because of this[1] issue, which is Linux specific, we see very frequent failures.

[1]: https://code.google.com/p/chromedriver/issues/detail?id=467
docs(tutorial): fixed path to controllersSpec.js file

☆.。.：*・゜☆ DOMO ARIGATO MR ROBOTO ☆.。.：*・゜☆

Closes #7504
revert: fix($compile): pass transcludeFn down to nested transclude directives

This reverts commit 113850602de2f8bc396df4ffd54bb0f1be565b17.

This change introduced regressions for several scenarios.

reduction: http://jsfiddle.net/5242N/4/
feat($interpolate): escaped interpolation expressions

This CL enables interpolation expressions to be escaped, by prefixing each character of their
start/end markers with a REVERSE SOLIDUS U+005C, and to render the escaped expression as a
regular interpolation expression.

Example:

`<span ng-init="foo='Hello'">{{foo}}, \\{\\{World!\\}\\}</span>` would be rendered as:
`<span ng-init="foo='Hello'">Hello, {{World!}}</span>`

This will also work with custom interpolation markers, for example:

     module.
       config(function($interpolateProvider) {
         $interpolateProvider.startSymbol('\\\\');
         $interpolateProvider.endSymbol('//');
       }).
       run(function($interpolate) {
         // Will alert with "hello\\bar//":
         alert($interpolate('\\\\foo//\\\\\\\\bar\\/\\/')({foo: "hello", bar: "world"}));
       });

This change effectively only changes the rendering of these escaped markers, because they are
not context-aware, and are incapable of preventing nested expressions within those escaped
markers from being evaluated.

Therefore, backends are encouraged to ensure that when escaping expressions for security
reasons, every single instance of a start or end marker have each of its characters prefixed
with a backslash (REVERSE SOLIDUS, U+005C)

Closes #5601
Closes #7517
docs($interpolate): replace `jerk` with something nicer/more neutral

I thought `jerk` illustrated the "defacing" factor nicely, but I suppose it's not very nice to have
in official documentation.
docs(*): fix its vs it's typos.

Only use the apostrophe if you can expand "it's" to "it is" and
still have a grammatical phrase.

Closes #7524
fix(Scope): $broadcast and $emit should set event.currentScope to null

When a event is finished propagating through Scope hierarchy the event's `currentScope` property
should be reset to `null` to avoid accidental use of this property in asynchronous event handlers.

In the previous code, the event's property would contain a reference to the last Scope instance that
was visited during the traversal, which is unlikely what the code trying to grab scope reference expects.

BREAKING CHANGE: $broadcast and $emit will now reset the `currentScope` property of the event to
null once the event finished propagating. If any code depends on asynchronously accessing thei
`currentScope` property, it should be migrated to use `targetScope` instead. All of these cases
should be considered programming bugs.

Closes #7445
Closes #7523
docs(ngRoute): $routeParams is Object.<string, string>

Closes #7386
docs(guide/concepts-module-service.png): Typo in image

The ng-app was called ng=app in diagram image.

Closes #6473
Closes #7528
docs(tutorial/step-5): update image to match code

Closes #2753
docs($compile): remove reference to ngRepeat providing compile function

ngRepeat no longer has the compile function in its directive definition
object, since it retrieves its transclusion via the link function.

Closes 5638