Eliminate PatBind's optional type argument.

This patch moves the type signature from the constructor PatBind to its
pattern. So rather than

> PatBind l p (Just ty) rhs binds

the parser will now yield

> PatBind l (PatTypeSig l' p ty) rhs binds
Update tests (remove patbind type signature)
Merge Rhs/GuardedRhs and GuardedAlts/GuardedAlt.

This patch merges the isomorphic data types Rhs and GuardedAlts,
and GuardedRhs and GuardedAlt. This change removes quite a bit
of code duplications, for this library and for users alike.

The only thing that may become more complicated is pretty printing,
where the context determines whether an equals sign or a right arrow
should be used when printing Rhs/GuardedRhs.

This fixes parent's #43.
Update tests (Alts -> Rhs)
Contributing: add a note about commit msgs
Parse "foo = capi". Fixes #86.
Add test for #86.
Let ImpredicativeTypes imply ExplicitForAll. Fixes #16.
Parse "foo = interruptible". Cousin issue to #86.
Test "foo = interruptible". Cousin issue to #86.
Fix -Wall warnings.
Fix -Wall warnings on Fixity.hs.
Fix some -Wall warnings on Extensions.hs.
Add lexWhile_ which ignores the return value.
Fix -Wall warnings on InternalLexer.hs
Fix -Wall warnings on annotated Fixity.hs.
Parse qualified record punning. Fixes #20.
Let RecursiveDo enable 'rec' keyword. Fixes #42.
Add test for #42.
Add test for fixed #35.