Fix mirror to actually not be completely broken.

Also add tests, and add it as pre_scala_mirror in Mirror.