feat(Scope): add `$watchGroup` method for observing a set of expressions

Given an array of expressions, if any one expression changes then the listener function fires
with an arrays of old and new values.

$scope.watchGroup([expression1, expression2, expression3], function(newVals, oldVals) {
 // newVals and oldVals are arrays of values corresponding to expression1..3
 ...
});

Port of angular/angular.dart@a3c31ce1dddb4423faa316cb144568f3fc28b1a9
refactor($interpolate): split .parts into .expressions and .separators

BREAKING CHANGE: the function returned by $interpolate
no longer has a `.parts` array set on it.
It has been replaced by two arrays:
* `.expressions`, an array of the expressions in the
  interpolated text. The expressions are parsed with
  $parse, with an extra layer converting them to strings
  when computed
* `.separators`, an array of strings representing the
  separations between interpolations in the text.
  This array is **always** 1 item longer than the
  `.expressions` array for easy merging with it
perf($compile): watch interpolated expressions individually
refactor($interpolate): attempt to remove hacky code due to $interpolation perf improvements
perf($interpolate): speed up interpolation by recreating watchGroup approach

This change undoes the use of watchGroup by code that uses $interpolate, by
moving the optimizations into the $interpolate itself. While this is not ideal,
it means that we are making the existing api faster rather than require people
to use $interpolate differently in order to benefit from the speed improvements.
docs(guide/forms): fix quotes around updateOn that broke ngModelOptions example
docs(tutorial): update step_11.ngdoc

Change toEqual to toEqualData in the test 'should create "phones" model with 2 phones fetched from xhr'
to make test more consistent.

Closes #7182
docs(tutorial): fix typos in examples

The phonecatApp and phonecatAnimations modules have a dot where a semicolon should be at the end of the sentence

Closes #7167
docs(tutorial/step_03): sync markup with angular-phonecat

Update from Bootstrap 2.3 to 3.1 changed "span" to "col" tags

Closes #7172
docs(tutorial): update step_07.ngdoc

Closes #7169
docs(changelog): release notes for 1.3.0-beta.6 expedient-caffeination
docs(guide/controller): fixed spelling of spiciness

Closes #7185
docs(tutorial/step-12): correct file path

Fixed wrong file path:
- angular/angular-animate.js -> angular-animate/angular-animate.js, which meets the code in app/index.html

Closes #7168
refactor(jqLite): change leftover element.bind/unbind to element.on/off
docs(tutorial/index): add directions for installing bower
chore(package.json): remove dependencies which are no longer required

Based on https://github.com/angular/angular.js/issues/3244#issuecomment-41003086, I don't believe
we actually use either of these now that dgeni has replaced the old docs app. These should be
removed if Travis is green.

The i18n scripts still rely on q, so unfortunately it can't be gotten rid of just yet.
chore(clean-shrinkwrap): chokidar is now fixed at v0.8.2
chore(npm-shrinkwrap): update dependencies

Dgeni-packages is updated to v0.8.3 to fix a bug in the docs (#7184)
Karma is updated to get us the fixed version of chokidar (v0.8.2)

Closes #7184
docs(examples): use form POST to create Plunkers

The previous solution for opening Plunkers from the docs relied on tight
coupling between the docs site and the plunkr site, in particular the
URL to the example code on the docs server was hard coded in the Plunker
site.

This change goes back to the old POST method of creating a Plunker, but
with a subtle difference: In the very old docs, the content was injected
directly into the example HTML at build time.  This was easy enough to
do as the example actually ran in the current page but also increased
the size of the doc page.

The new examples are run in completely separate iframes. This new version
of showing a Plunker loads the file content for the Plunker from the
server by accessing the example's manifest.json file using $http requests.

This also has the additional benefit that you can now generate plunkers
from examples that are running locally or, frankly, in any folder on any
server, such as personal builds on the Jenkins CI server.

Closes #7186
Closes #7198
docs(ngSwitch): fix formatting of custom usage field