Handle partial pattern and expression signatures

Type wildcards are now supported in pattern and expression signatures, e.g.

  foo (x :: Maybe _) = (x :: Maybe _)

Both wildcards will be instantiated to the same new type variable.

This implements option 1 described on:
https://ghc.haskell.org/trac/ghc/wiki/PartialTypeSignatures#PartialExpressionandPatternSignatures

How to report the wildcard instantiations in pattern and expression
signatures:

We don't walk through a completely typechecked syntax tree to report the
wildcard instantiations in patterns and expressions, this would take an awful
lot of boilerplate tree walk code.

Instead, when typechecking a pattern with a signature or an expression with a
signature, we make a delayed monadic computation that will report the wildcard
instantiations when it is 'forced'. We store these delayed monadic
computations in the typechecking monad and force them after typechecking is
completed. This is the same approach as we used for reporting wildcard
instantiations in regular (partial) type signatures. At the time, it felt a
bit awkward, but it now seems a reasonable approach (even though it uses a
mutable reference).

The delayed monadic computations now take an extra argument, the TidyEnv,
which will be threaded through all calls. This makes sure we use the same
tidied types in all wildcard instantiations reports.
Test partial pattern and expression signatures
Remove 2 outdated TODOs
BUG: pts are ignored for pattern bindings
Name type variables originating from wildcards `w_`

Previously, they were named `tw_` (suffixed with the name in case of a named
wildcard), which was rather long. It is an abbreviation of 'type wildcard'.

I'm still not completely satisfied with `w_`. Maybe we should generate names
like `a`, `b`, `c`, ... ?
Disallow wildcards in default declarations