Add pre-pickle phase to compiler

Adds a pre-pickle phase to the compiler. There are two reasons to do that:
- Annotate subclasses of js.Any. This will allow us to drop the use of the symbol history
- Handle extension methods to subclasses of js.Any

**Attention**: With this PR, "magic" types like `scala.Null` or `scala.Nothing` are not considered subtypes of `js.Any` anymore. (Causing the changes in dac45fd7da9bd2d62d76a6b49d3160796af78f97)

Whitelisted par-tests (as of e766c9acd68970239ee251ed635c8a217b1fe2ab) all succeeded with the exception of a couple of already blacklisted (but not un-whitelisted) ones. (see 71195971e469f2c23136aaad84ded1cabefe7d3f)