Make function type shower a little prettier

* Only parenthesizes when LHS of a function type is a function type
Make unifyTypes a little more "monadic"
Tiny refactor: ($) -> (.)
Nukes `Subst` type

* It was, for all intents, identical to `TypeEqn`, so it's been replaced
* with that.
Use Subst -> TypeEqn change for clarity
Rips out TypeEqnSet

* Adds unnecessary complexity for not much gain at the moment.
Use idiomatic `maybe` method instead of case