Rebase of #7786 against pre-3.0.0-rc.1

This was hell to rebase, due to someone reformatting `package.json` at some point, and due to old, unrelated `3.0.0-wip` changes being mixed in somehow.

After `diff`-ing like crazy to double-check it, this rebase *seems* to have gone okay, except for `package.json`, which I just manually re-clobbered with the one from #7786 and manually then re-did the `twbs` changes (hence the 2nd-to-last commit).

#8560 (/ 91b6a43ed934931ccfdb11213a3b63984457b07c) will unfortunately be lost as collateral damage; it'll need to be rewritten & ported to Grunt.

This could probably use a wee bit of testing.