Fix #856: Make javalibEx compile and properly test in CI
Merge pull request #857 from gzm0/fix-javalib-ex

Fix #856: Make javalibEx compile and properly test in CI
Move classes in java.lang to a separate project

Compiling hijacked classes (like java.lang.{Class, Integer, ...})
together with too much other code (for some definition of too much)
can trip scalac pretty badly. This commit changes the build to compile
a minimal subset (all in java.lang) separately to avoid this issue.

As a nice side-effect, it cleans up the directory structure in
the javalib project and removes empty build.sbt files.
Merge pull request #859 from gzm0/split-javalib

Move classes in java.lang to a separate project
Fix #827: Implement java.net.URI
Merge pull request #855 from gzm0/uri

Fix #827: Implement java.net.URI
Use CPS in the optimizer to deal with PreTransforms.

Instead of having a method
  def pretransformExpr(tree: Tree): PreTransform
which in direct style, we now have a method
  def pretransformExpr(tree: Tree)(
      cont: PreTransform => Tree): Tree
which works in continuation passing style.
Essentially it means: pretransform this tree, and then call
this continuation with the resulting PreTransform. The result
of the continuation is your result.

This allows to make optimistic optimization choices, i.e.,
tryOrRollback, at exactly the right place: the current
continuation is called once in the try part, and, if it fails,
once again in the fallback case. The PreTransforms can contain
a reference to the appropriate cancelFun: since PreTransforms
are only available in the continuations that receive them, and
these continuations have been called with the try part on the
call stack, it is always allowed to call the cancelFun.