Simplify type checking
There is a much more direct way to type-check these types in patterns, so I implemented it. This is tested, and it works.
This also includes Functor instances for HsImplicitBndrs and friends, without breaking with the TTG pattern.
One remaining test case failure: not emitting warnings for underscores in patterns.