Fix #1406: Add TimeoutException and CancellationException
Remove manual reachability from optimizer

Also, remove additionalExports from ClosureOptimizer
Merge pull request #1407 from alexandru/master

Fix #1406: Add TimeoutException and CancellationException
Fix #1347: Document ECMAScript versions with badges
Fix #1415: GlobalScope extends js.Any only
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
Fix #1367: Add facade types for setTimeout et al.
Merge pull request #1416 from gzm0/ecma-badges

Fix #1347: Document ECMAScript versions with badges
Simplify the uniqueness cache of Symbol.

Using the collection API behavior of js.Dictionary.
Fix js.Dictionary wrt the collection API contracts.

* Fix a JavaScript wart with dict.contains("hasOwnProperty")
* -= should not throw if the key does not exist
* apply() should throw if the key does not exist
* get() should return Some(undefined) if the key exists but the
  value is `undefined`.
* It should not extend js.Object since calling methods of
  js.Object is unsafe (given that they could be keys).

This fixes #1414 and #1411.
Merge pull request #1418 from sjrd/fix-dictionary

Fix js.Dictionary wrt the collection API contracts.