perf($parse): removing binaryFn and valueFn wrappers from filter expressions

Improves parsed-expressions/filters benchmark by 15%.
refactor($parse): clean up object literal fn

No measurable impact on performance
refactor($parse): remove commented out code
fix($parse): ensure CSP assignable expressions have `assign()`

Fixes regression where the `assign()` method was not added to chains of identifiers in CSP mode,
introduced originally in b3b476d.

Also fixes the $parse test suite to ensure that CSP code paths are taken when they're expected to be
taken.

Closes #9048
chore(docs): update to dgeni-0.4.0

* update package with new services and computeId config
* generateIndexPagesProcessor was not using log
* use StringMap not ES6-shim Map in errorNamespaceMap
* remove unused dependencies from generateErrorDocsProcessor
* ensure generatePagesDataProcessor adds its doc to the collection
* debugDumpProcessor was moved to dgeni-packages
test(docs): improve docs e2e tests
test(docs): add extra docs e2e tests
fix(jqLite): fix event.stopImmediatePropagation() so it works as expected

jqLite doesn't override the default implementation of event.stopImmediatePropagation()
and so it doesn't work as expected, i.e, it doesn't prevent the rest of the event
handlers from being executed.

Closes #4833
test(jqLite): Refactor test for isDefaultPrevent

Refactor the spec for isDefaultPrevent method so it fails if the
existing expectations aren't executed.
fix($compile): update '@'-bindings in controller when bindToController is true

'@'-bindings were previously updating the scope when they ought to have been
updating the controller (requested via `bindToController: true` + controllerAs).

It's a one-line fix + test case.

Closes #9052
Closes #9077
docs(ngShowHide): use backticks to denote CSS classes and directive names

add backticks around directive names to improve documentation consistency, as it's used in some
parts of the docs already.

Closes #9081
chore(docs): ensure all docs e2e tests are run
test(docs): fix url matching on api e2e tests
chore(docs): remove excess indentation from code blocks

dgeni-packages 0.10.0-rc.5 has a fix for this problem, so this commit updates
to that version.
Adds a new e2e test to prove this is fixed.

Closes #8963
docs(ngView): remove obsolete comment from code sample

Closes #9086
docs(ngModelOptions): mention that it's inherited

Closes #9096
Closes #7212
feat(ngInclude): add template url parameter to events

The 'src` (i.e. the url of the template to load) is now provided to the
`$includeContentRequested`, `$includeContentLoaded` and `$includeContentError`
events.

Closes #8453
Closes #8454
chore(largetable-bp): fix typo in main.html
perf($parse): execute watched expressions only when the inputs change

With this change, expressions like "firstName + ' ' + lastName | uppercase"
will be analyzed and only the inputs for the expression will be watched
(in this case "firstName" and "lastName"). Only when at least one of the inputs
change, the expression will be evaluated.

This change speeds up simple expressions like `firstName | noop` by ~15%
and more complex expressions like `startDate | date` by ~2500%.

BREAKING CHANGE: all filters are assumed to be stateless functions

Previously it was a good practice to make all filters stateless, but now
it's a requirement in order for the model change-observation to pick up
all changes.

If an existing filter is statefull, it can be flagged as such but keep in
mind that this will result in a significant performance-penalty (or rather
lost opportunity to benefit from a major perf improvement) that will
affect the $digest duration.

To flag a filter as stateful do the following:

myApp.filter('myFilter', function() {
  function myFilter(input) { ... };
  myFilter.$stateful = true;
  return myFilter;
});

Closes #9006
Closes #9082
refactor($parse): name anonymous fns for easier debugging and profiling