Emit call graph information in .sjsinfo, for upcoming dce.

No dce is actually performed yet. This commit only emits the
necessary information.
Perform reachability analysis for dce.

The dce itself is still not actually done. The
preoptimizeJS task performs reachability analysis, from
which dce will be able to work to produce the optimized
output.
Write dce'ed output in preoptimizeJS based on reachability analysis.

Based on the reachability analysis introduced in the previous
commit, write a dce'ed output in preoptimizeJS. It includes
only classes, objects, methods and data that have been marked
as reachable by the analysis.

This completes the first version of the type-aware dead code
elimination.
Add .html files to run preoptimized versions of the examples.
Rewire optimizeJS to work on the output of preoptimizeJS.

This yields smaller optimized code (~25 % smaller for the
reversi), and in *much* less time (< 10 seconds).
Merge pull request #320 from sjrd/type-aware-dce

Type-aware dce