fix($compile): do not merge attrs that are the same for replace directives

If a directives specifies `replace:true` and the template of the directive contains
a root element with an attribute which already exists at the place
where the directive is used with the same value, don't duplicate the value.

Closes #7463
docs($compile): deprecate `replace` directives

BREAKING CHANGE:

The `replace` flag for defining directives that
replace the element that they are on will be removed in the next
major angular version.
This feature has difficult semantics (e.g. how attributes are merged)
and leads to more problems compared to what it solves.
Also, with WebComponents it is normal to have custom elements in the DOM.
docs($cacheFactory): fix typo
docs(tutorial): update code snippet for step 7

replaced bootstrap 2 with bootstrap 3 classes

Closes #7433
style: added whitespace

spaces between the ')' and '{' make code a tad easier to read.

Closes #7542
docs(tutorial/index): explain E2E acronym

It was confusing to read "end 2 end" as a numeric two. I kept wondering what two end(s).
Later in the tutorial, the text switched to "End to End" which made more sense than numeric two.
refactor($parse): remove the support of JSON parsing mode

It's a feature that isn't exposed to the public, and is
no longer used internally.
chore(travis/e2e): update protractor to 0.23.1
chore(tests): remote iit that sneaked into ngStyle
chore(grunt): check files in src for ddescribe/iit

Previously, only files in test/ were checked. This does not capture
end to end tests, which are in comments in src/.
docs(tutorial): match html from angular-phonecat in step 7 instructions

Place phoneId binding in a proper HTML node

The code where the phoneId binding in the phone-detail.html template is first explained in step 7
of the tutorial doesn't make it a child of a proper HTML node, which makes the end-to-end test
against the view (also introduced in step 7) fail.

The test acquires the binding right from the view (by.binding('phoneId')), and apparently this
operation fails when the binding is not a child of an HTML node, and therefore the entire test also
fails. As soon as the binding is placed inside a <span></span> tag pair, the binding is found and
the test passes. The code on github for step 7 has it right, the binding is within the span tags,
but in the documentation I'm patching here the span's are missing.

☆.。.：*・゜☆ MERCI ☆.。.：*・゜☆

Closes #7561
fix($parse): remove deprecated promise unwrapping

The feature has been deprecated in #4317

BREAKING CHANGE: promise unwrapping has been removed.
It has been deprecated since 1.2.0-rc.3.

It can no longer be turned on.
Two methods have been removed:
* $parseProvider.unwrapPromises
* $parseProvider.logPromiseWarnings
tests(docsAppE2E): fix race condition flake with switching to new frame

Closes #7569
feat(*): lazy one-time binding support

Expressions that start with `::` will be binded once. The rule
that binding follows is that the binding will take the first
not-undefined value at the end of a $digest cycle.

Watchers from $watch, $watchCollection and $watchGroup will
automatically stop watching when the expression(s) are bind-once
and fulfill.

Watchers from text and attributes interpolations will
automatically stop watching when the expressions are fulfill.

All directives that use $parse for expressions will automatically
work with bind-once expressions. E.g.

<div ng-bind="::foo"></div>
<li ng-repeat="item in ::items">{{::item.name}};</li>

Paired with: Caitlin and Igor
Design doc: https://docs.google.com/document/d/1fTqaaQYD2QE1rz-OywvRKFSpZirbWUPsnfaZaMq8fWI/edit#
Closes #7486
Closes #5408
fix($animate): retain inline styles for property-specific transitions

Transitions that are run through ngAnimate which contain a specific property
cause any inline styles to be erased after the animation is done. This has
something to do with how the browsers handle transitions that do not use
"all" as a transition property.

Closes #7503
docs(changelog): release notes for 1.3.0-beta.10 excessive-clarification
chore(parseSpec): fix bad merge
docs(ngView): remove reference to scope

$route.name.scope.current returns undefined in the docs example,
as scope is never injected into the relevant controller.
Scope doesn't need to be there, so it's best to just remove it.

Suggested in #5076.
docs(ngController): add more description of `controller as` syntax

Using `controller as` in the template is not described well
in the docs, as both `scope` injection and `this` are presented
equally without too much discussion of the advantages of using
either. I added a bit more discussion based on google's internal
style guidelines.

Closes #7591
Closes #5076 (until Angular 2.0 comes out and we refactor everything)
docs(ngController): add formatting to `controller as` description and example

Adds to #7591