Created by: cvrebert
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 (closed) (/ 91b6a43e) 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.