Fix #499: Emit opaque URI in positions for virtual Scala files
Remove cake from JSAST
Merge pull request #524 from gzm0/virtual-file-source-map

Fix #499: Emit opaque URI in positions for virtual Scala files
Fix #525: Closure emits spurious warnings for @JSExported properties.
Fix #518: Closure sometimes eliminates all our exports.
Merge pull request #527 from sjrd/fix-closure-warns-and-bug

Fix closure warns and bug
Merge pull request #529 from sjrd/improve-dce-warnings

Report call stack when warning for non-existent class.
Include the core info files directly in the tools.

This removes the need to chain them through our library + tools
API for no good reason, and hence eliminates a quirk from our
tools API.
Change the API and serialization format of class info.

In 0.4.x, class info were stored in .sjsinfo files with a JSON
format. In the initial transformations to serialize the IR, we
have limited the changes and still produced class info as an
IR tree with the exact same JSON structure as before.

However, this format of serialization is unnecessary complex and
slow to parse, which is a pity since class info (and even more
importantly the subset of "rough class info") should be parsed
quickly.

This commit introduces a binary format for serializing the class
info, and in the process lifts the class info as a proper API in
the IR package.