improve pretty printer core
improve pretty printer core

We add a derived instance for pretty-printing things wrapped in the Identity
functor. This simplifies pretty printing more complex structures by not
requiring us to tediously use `runIdentity` all over the place.

We also add a definition of an indentation level of four spaces to avoid magic
numbers in pretty-printers.

djeik/goto,djeik/goto