More accurate locs for "Wilcard not allowed" msgs

The function containsWildcard in RdrHsSyn now returns the location of the
found wildcard instead of just a Bool. Defining a Monoid for this made it easy
to use again.

When encountering a wildcard in a type where it isn't allowed, e.g. a class
method type signature, the location of the error message is now that of the
first wildcard, instead of the beginning of the type or even the whole
definition.