Build: drop bower; use npm for front-end deps

Fixes #15186
Closes gh-1620
Build: update front-end dependencies
Build: update node dependencies barring jscs
Build: update grunt-jscs-checker and pass with the new rules
Build: update source map options for the new grunt jshint
CSS: elements are hidden when either offsetWidth or offsetHeight is zero

- Note: this is a breaking change that has been delayed for several versions.

Fixes #10406
Fixes #13132
Css: Fix the "sanity check" test

The #dl element has 0 height so it's now considered hidden regardless
of its width.
CSS: Removed redundant "to the number" in comment

Closes gh-1594
Core: Drop strundefined variable
Offset: Simplified a conditional
Build: Moved JSHint directives to .jshintrc file

Closes gh-1595
Attr: Use typeof check for getAttribute method

Ref 29838b6cab6f2e508f3e9692f32918c72b1a504b
CSS: Remove use of getDefaultComputedStyle

Remove optimization to make jQuery compatible with Google's Polymer project

Closes gh-1647
Fixes #15227
CSS: Use pre-defined displays for html and body

Ref 60f546acb1c7136092b4fd01cccff052e468cc72
Ref 274feb53cc9a99633dfac785d8b3b837d192c43c
CSS: Correct typo in the comment
CONTRIBUTING: Close parenthesis

Closes gh-1648
Manipulation: Tolerate XMLNode host object input to getAll

Fixes #15151
Ref 25712d77c3bc0221b5b2b9b9492c20a9cfbe1b17
Closes gh-1602
Event: Restore the `constructor` property on jQuery.Event prototype

The original definition of the jQuery.Event prototype was paving over the
`constructor` property which was causing jQuery.isPlainObject to
improperly report that an instance of jQuery.Event was a plain object.

Fixes #15090
Closes gh-1580
Data: avoid non-alphanumeric chars in expando properties

Ref chromium issue 378607
Ref #14839
Closes gh-1662
README: Improve build instructions

Thanks @NickStefan

Closes gh-1663