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.
You are right about hygiene. But note that the error message talks about `apply` (not `unapply`), so this failure is not introduced by my change. Arguably, the failure is according to the spec: http://www.scala-lang.org/files/archive/spec/2.11/05-classes-and-objects.html#case-classes.

We should do the same for the parameter types of apply and the return type of unapply: both hygienic, or both not.

We should also include `copy` in the discussion – it's not systematic that it works differently. The problem with copy is that we have a stronger argument for making it hygienic: otherwise we can get a failure even without an explicit shadowing type declaration:

```scala
class A {
  class C
  case class B(x: C) extends A { def copy(x: C = this.x) = ... }
}
```

The class parameter type is `A.this.C`. If copy was non-hygienic, the parameter type of `copy` would be `B.this.C` (since B extends A), so it would not compile.