docs(tutorial/step_11): it says there are 4 tests, BUT THERE ARE 5!

Bueno!

Closes #9775
style(filterSpec): fix white-space and newline inconsistencies

Closes #9765
chore(tests): remove redundant file

Closes #9706
refactor(tests): remove some duplicate conditions

Closes #9706
chore(npm): add cheerio to npm shrinkwrap

Closes #9706
chore(npm): updated some packages so shrinkwrap works with npm@2.x

some packages were using versions that do not match semver@4 semantics and therefore generated
errors when trying to create shrinkwrap with npm@2.x. this shrinkwrap will make it much easier to
update the shrinkmap from now on

Closes #9706
test($compile): add test for optional `require` in directives with `^` operator

The directive property `require` allows optional requirement via
the `?` before or after the `^` operator. Add tests to ensure this
functionality is not lost inadvertently.

Closes #9391
Closes #9392
fix($compile): returning null when an optional controller is not found

Currently, `undefined` is returned. However, the desired behavior is to
return `null` when the controller is optional and not found.

(If this breaks your app, it really shouldn't .v.)

Closes #9404
Closes #9392
fix(filterFilter): correctly handle deep expression objects

Previously, trying to use a deep expression object (i.e. an object whose
properties can be objects themselves) did not work correctly.
This commit refactors `filterFilter`, making it simpler and adding support
for filtering collections of arbitrarily deep objects.

Closes #9698