Fix #375: Factor out tools in a reusable library.

Currently, this includes the preoptimizer, aka dce, as well
as the optimization via Closure.
Partial #288: Add neg-partest framework for Scala.js specific stuff
Partial #308: All neg from old HelloWorld. TODO: AST inspection
Fix #372: Don't protect reciever when calling js.Dynamic.x
Merge pull request #379 from gzm0/neg-tests-clean

Neg tests clean
Merge pull request #377 from sjrd/factor-out-tools

Fix #375: Factor out tools in a reusable library.
Merge pull request #380 from gzm0/fix-js-dynamic-protect

Fix js dynamic protect