Pattern matcher

@odersky there's one test failure due to stackoverflow in TypeComparer when comparing types during patmat and one failure(data race?) in typer when compiling PatternMatcher.scala.
I haven't investigated them, but maybe you could have a look?
There are also a lot of errors coming from erasure not erasing some types left by pattern matcher. You've told that you have fixes some errors in erasure, are all those fixes in this branch?