WIP: Type utils and niceTypes
Fold/unfold now works!

Fold/unfold had an un-dealt-with corner case that had not been spotted.
When you had a recursive context that _included_ another recursive
context (e.g. lists of lists) then foldUp would break horribly!

We are now handling that correctly using some hueristics but we are
once again shown that we should have annotated the AST with type
information, the hacky-ness around not carrying types around is
getting out of hand.
Almost working!