perf(jQuery): only trigger $destroy if a handler exists

Speeds up largetable destruction by 30% (500ms) when jQuery 2.1.1 is present.

Closes #8859
chore(package.json): tidy up dependencies

Sorted dependencies into alphabetic order. If we can keep them like this
it will be much easier to keep track of version changes.

Updated bower and gulp to newer versions.
chore(bower): refactor bower usage

The gulp bower task in the docs app was never actually running since it couldn't
find the bower.json file and was silently failing. Updating to a newer bower
highlighted this issue.

This commit moves the docs app specific bower components into the docs folder.
There are only jquery and closure compiler related components in the project
folder now.

It also improves the gulp bower task to provide better feedback of progress
and errors.
docs(form): move param tag outside of main description
docs($filter): remove duplicate documentation of register method
refactor(select): remove code duplication
feat(angular.forEach): add the array/object as the 3rd param like the native array forEach

Closes #7902
perf(extend): remove use of forEach to remove calls/closures/passing arguments

Closes #8898
fix(input): make checkbox ngTrueValue work with required

Fixes #5164