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 duplication, for this library and its 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.