fix($parse): properly handle dots at the end of identifiers

Fixes #4613
Fixes #4912
Closes #8559
docs(guide/di): correct spelling `behinds` > `behind`

Closes #8749
refactor($injector): remove unused invoke queue variable

Closes #8755
perf($compile): only iterate over elements with link functions

Closes #8741
docs(guide/directive) example79 ptor missing attr

Closes #8257
docs(guide/directive): update since 'EA' is now the default restrict value

11f5aeeee952a395edaf54e3277674f211a82fc7 changed the compiler to use 'EA' as a 'restrict'
value if not specified in the directive object, and the directive guide needed some slight
changes to address this.

Closes #8769
docs(dateFilter): add example of string literals in format string

Also changes the wording to include the word "escaped" and "escape", which may help users find the
information they're looking for via searching. (ﾉ◕ヮ◕)ﾉ*:･ﾟ✧

Closes #8770
refactor($injector): remove unused strictDi argument from createInternalInjector

createInternalInjector does not specify the formal parameter `strictDi`, and instead uses the binding
from the parent function's formal parameters, making this parameter unnecessary.

Closes #8771
docs(form): add dollar sign back to setSubmitted()

Dollar sign was missing for setSubmitted() due to fc732564640231fb59dcd7e432093c3336083653, just
adding it back in ヽ(^。^)ノ

Closes #8772
chore(ngAnimate): fix if statement whitespacing
feat($animate): coalesce concurrent class-based animations within a digest loop

All class-based animation methods (addClass, removeClass and setClass) on $animate
are now processed after the next digest occurs. This fix prevents any sequencing
errors from occuring from excessive calls to $animate.addClass, $animate.remoteClass
or $animate.setClass.

BREAKING CHANGE

$animate.addClass, $animate.removeClass and $animate.setClass will no longer start the animation
right after being called in the directive code. The animation will only commence once a digest
has passed. This means that all animation-related testing code requires an extra digest to kick
off the animation.

```js
//before this fix
$animate.addClass(element, 'super');
expect(element).toHaveClass('super');

//now
$animate.addClass(element, 'super');
$rootScope.$digest();
expect(element).toHaveClass('super');
```

$animate will also tally the amount of times classes are added and removed and only animate
the left over classes once the digest kicks in. This means that for any directive code that
adds and removes the same CSS class on the same element then this may result in no animation
being triggered at all.

```js
$animate.addClass(element, 'klass');
$animate.removeClass(element, 'klass');

$rootScope.$digest();

//nothing happens...
```
feat($animate): use promises instead of callbacks for animations

The $animate service (both the service inside of ng and ngAnimate) now
makes use of promises instead of callback functions.

BREAKING CHANGE

Both the API for the cancallation method and the done callback for
$animate animations is different. Instead of using a callback function
for each of the $animate animation methods, a promise is used instead.

```js
//before
$animate.enter(element, container, null, callbackFn);

//after
$animate.enter(element, container).then(callbackFn);
```

The animation can now be cancelled via `$animate.cancel(promise)`.

```js
//before
var cancelFn = $animate.enter(element, container);
cancelFn(); //cancels the animation

//after
var promise = $animate.enter(element, container);
$animate.cancel(promise); //cancels the animation
```
fix($animate): use $timeout to handle the delay within staggering animations

When transition-delay and animation-delay were used to drive the staggering
animation the result was unpredictable at times due to the browser not being
able to register the generated delay styles in time. This caused a hard to
track down bug that didn't have a solid solution when styles were being used.

This fix ensures that stagger delays are handled by the $timeout service.

Closes #7228
Closes #7547
Closes #8297
Closes #8547

BREAKING CHANGE

If any stagger code consisted of having BOTH transition staggers and delay staggers
together then that will not work the same way. Angular will now instead choose
the highest stagger delay value and set the timeout to wait for that before
applying the active CSS class.
feat($compile/ngBind): only add binding info if debugInfo is enabled

The compiler and ngBind directives add binding information (`ng-binding`
CSS class and `$binding` data object) to elements when they are bound to
the scope. This is only to aid testing and debugging for tools such as
Protractor and Batarang. In production this is unneccesary and add a
performance penalty.

We were storing the whole `interpolationFn` in the `$binding` data on
elements but this function was bringing a lot of closure variables with it
and so was consuming unwanted amounts of memory.

Now we are only storing the parsed interpolation expressions from the
binding (i.e. the values of `interpolationFn.expressions`).

This change disables adding this binding information by default. You can
enable it by calling `$compilerProvider.enableDebugInfo()` in a module
`config()` block.

BREAKING CHANGE:

The `ng-binding` CSS class and the `$binding` data object are no longer
attached to DOM elements that have a binding to the scope, by default.
If you relied on this feature then you can re-enable it in one of your
application modules:

```
someModule.config(['$compileProvider', function($compileProvider) {
  $compileProvider.enableDebugInfo();
}]);
```

Also bindings are always arrays now and they do not include the curly
braces `{{ ... }}` in the binding expression that is stored.
feat($compile): only add scope info if debugInfo is enabled

BREAKING CHANGE:

Scope objects are not attached to elements by default. If you wanna use
`angular.element(elm).scope()`, enable degug info in one of your application
modules:
```
someModule.config(['$compileProvider', function($compileProvider) {
  $compileProvider.enableDebugInfo();
}]);
```

Or execute in the console:
```
angular.reloadWithDebugInfo()
```
feat: add angular.reloadWithDebugInfo()
chore(clean-shrinkwrap): chokidar is fixed since 0.8.2
chore(package.json): reorder devDependencies into alphabetic order
chore(package.json): update to Protractor 1.1.1
chore(protractor-shared-conf): add enableDebugInfo module