Fix warnings
Generalise over open wildcards

Wildcards that aren't unified with closed types should be generalised
over, e.g.

    bar :: _ -> _
    bar _ = True

The second wildcard will unify with the `Bool`, but the first one should
be quantified over, leading to the type `forall a. a -> Bool`.

Notes:
* Bindings with a partial type signature are handled by
  `tcPolyCheckInfer` (a better name should be chosen), which is a
  combination of `tcPolyCheck` (for bindings with a type signature) and
  `tcPolyInfer` (for bindings without a type signature). This function
  will be cleaned up later.
* The unification variables (uvars) created during the wildcard
  desugaring should be touchable. To this end, we store these uvars in
  the type checking environment to be used later.
* To combine the aforementioned wildcard uvars with the regular uvars,
  we introduce a new constructor for `Untouchables`, `RangeDisj` which
  combines two ranges.
* To discern wildcard uvars from regular uvars, we add a Bool parameter
  to the `TauTv` constructor of `MetaInfo` (stored in a uvar).
Fix recursive binds with partial type signatures

Test case:

orr :: a -> a -> a
orr = undefined

-- g was incorrectly generalised to `forall tw. tw` instead of just `Bool`
g :: _
g = f `orr` True

f :: _
f = g
Allow wildcards to unify with type variables

Example:

    eqq :: Eq b => b -> _ -> Bool
    eqq x y = x == y

The wildcard now correctly unifies with the type variable `b`.