Remove manual reachability from optimizer

Also, remove additionalExports from ClosureOptimizer
Entirely remove Input[T] classes for optimizers

This also removes `additionalExterns` from `ScalaJSClosureOptimizer`
and renames the `OutputConfig` classes to simply `Config` (for both
optimizers).
Refactor Analyzer to return Analysis
Include full call graph in Analysis

Note that the log printer still only prints a single reachability
path, since otherwise the output format is non-trivial.
Fix #1370: Fail by default if there are linking errors

Also add a flag that allows to only warn if there are linking errors
Merge pull request #1412 from gzm0/clean-analyzer

Cleanup Analyzer