feat($anchorScroll): support a configurable vertical scroll offset

Add support for a configurable vertical scroll offset to `$anchorScroll`.

The offset can be defined by a specific number of pixels, a callback function
that returns the number of pixels on demand or a jqLite/JQuery wrapped DOM
element whose height and position are used if it has fixed position.

The offset algorithm takes into account items that are near the bottom of
the page preventing over-zealous offset correction.

Closes #9368
Closes #2070
Closes #9360
chore(docs): apply the anchorScroll offset feature to the docs app

Closes #9360
fix($anchorScroll): add missing tests and do overall clenup

Add tests for <body> with border/margin/padding and boxSizing.
Simplify and fix a couple of bugs.
test($anchorScroll): refactored tests to make them more "unit"-like

Mock `getBoundingClientRect()` method of elements in tests, instead of
relying on the browser to actually size and scroll the elements.
fix($anchorScroll): use the `load` event instead of `readystatechange`
squash
squash2
test($anchorScroll): fix a test and cleanup dead code
fix(jqLite): add private jqLiteReadyLoaded function

Add a private jqLiteReadyLoaded function that can be used to execute a
callback when the `load` event fires (or immediately if the page has
already loaded, i.e. `document.readyState === 'complete'`).