SI-6541 valid wildcard existentials for case-module-unapply

Instead of letting the compiler infer the return type of case module
unapply methods, provide them explicitly.
[Last time I tried to fix this](https://github.com/retronym/scala/compare/ticket/6541), I ended up with a custom type completer for `unapply` to add enough laziness to the mix so we could peek at the `info` of the case class to derive the type of the `unapply` method.