docs(guide/unit-testing): add info on testing element transclude directives

Closes #4505
Closes #8197
refactor($compile): improve readability on conditional assignment

Use ternary operator instead of if statement

Closes #5065
refactor(dateFilter): improve readability on conditional assignment

Use ternary operator instead of if statement

Closes #5065
refactor($http): improve readability on conditional assignment

Use ternary operator instead of if statement

Closes #5065
refactor($parse): improve readability on conditional assignment

Use logical OR operator instead of if statement

Closes #5065
fix(ngRoute): remove unnecessary call to decodeURIComponent

Since `$location.$$path` is already decoded, doing an extra `decodeURIComponent` is both unnecessary
and can cause problems. Specifically, if the path originally includes an encoded `%` (aka `%25`),
then ngRoute will throw "URIError: URI malformed".

Closes #6326
Closes #6327
fix(orderBy): correctly order by date values

Closes #6675
Closes #6746
style($route): convert tab indent to spaces
fix($rootScope): $watchCollection should handle NaN in objects

This fixes a potential infinite digest in $watchCollection when one of the values is NaN. This was previously fixed for arrays, but needs to be handled for objects as well.

Closes #7930
fix(select): force visual update in IE

IE9, IE10 and IE11 would always show the first <option> as
selected when the user moves from a null <option>
to a non-null one in a non-null <select>.
Even though the model was being updated correctly,
visually, the first <option> always appeared selected.

Setting the `selected` property twice in a row
seems to fix it in all the three versions mentioned above.

Closes #7692
Closes #8158
docs(orderBy filter): fix controller name in example

Closes #8133
Closes #8206
revert: feat(*): lazy one-time binding support

This reverts commit cee429f0aaebf32ef1c9aedd8447a48f163dd0a4.

See #7700 for a more performant approach for bind-once.
perf(*): more performant interpolation and lazy one-time binding

BEAKING CHANGE:
Lazy-binding now happens on the scope watcher level.

What this means is that given `parseFn = $parse('::foo')`,
bind-once will only kick in when `parseFn` is being watched by a scope
(i.e. `scope.$watch(parseFn)`)

Bind-once will have no effect when directily invoking `parseFn` (i.e. `parseFn()`)
test(ngOptions): ensure that one-time bindings works in ngOptions

Related #7700

Closes #8029
chore(travis): get npm dependencies from npm-bundle-deps
fix($http): fix double-quoted date issue when encoding params

This commit special cases date handling rather than calling toJSON as we always need
a string representation of the object.

$http was wrapping dates in double quotes leading to query strings like this:
  ?date=%222014-07-07T23:00:00.000Z%22

Closes #8150
Closes #6128
Closes #8154
refactor(bootstrap): Remove support for old bootstrap mechnanisms

Remove support for bootstrap detection using:

* The element id
* The element class.

E.g.

```
<div id="ng-app">...</div>
<div class="ng-app: module">...</div>
```

Removes reference to how to bootstrap using IE7

BREAKING CHANGE:

If using any of the mechanisms specified above, then migrate by
specifying the attribute `ng-app` to the root element. E.g.

```
<div ng-app="module">...</div>
```

Closes #8147
style($injector): added whitespace
feat($compile): explicitly request multi-element directive behaviour

Directives which expect to make use of the multi-element grouping feature introduced in
1.1.6 (https://github.com/angular/angular.js/commit/e46100f7) must now add the property multiElement
to their definition object, with a truthy value.

This enables the use of directive attributes ending with the words '-start' and '-end' for
single-element directives.

BREAKING CHANGE: Directives which previously depended on the implicit grouping between
directive-start and directive-end attributes must be refactored in order to see this same behaviour.

Before:

```
<div data-fancy-directive-start>{{start}}</div>
  <p>Grouped content</p>
<div data-fancy-directive-end>{{end}}</div>

.directive('fancyDirective', function() {
  return {
    link: angular.noop
  };
})
```

After:

```
<div data-fancy-directive-start>{{start}}</div>
  <p>Grouped content</p>
<div data-fancy-directive-end>{{end}}</div>

.directive('fancyDirective', function() {
  return {
    multiElement: true, // Explicitly mark as a multi-element directive.
    link: angular.noop
  };
})
```

Closes #5372
Closes #6574
Closes #5370
Closes #8044
Closes #7336
docs(guide/forms): fix controller name in example

The "Binding to form and control state" sample had the wrong controller name

Closes #8206