A bunch of bug-fixes from Simon
Each commit in this batch is separate.
One (the polymoprhic recursion one) probably needs a Haddock change, because I changed HsTypes.hs
Each commit in this batch is separate.
One (the polymoprhic recursion one) probably needs a Haddock change, because I changed HsTypes.hs