Fix indentation error in Main.hs.
Refactor out some common code.

The monad M should stay in Utils/Common.hs and not HIR/HIR.hs since it
isn't specific to that module.
Autoderive Show(HNode e x).

While getting GHC to deriving a Show instance for HNode makes the output
a little verbose (which may even be a good thing), we get to throw a
good deal of rather ugly code.
Move some common code into Utils/Common.hs
Remove unused pragma.

-XFunctionalDependencies is not needed in Utils.Common
Move freshVarName to Utils.Common.

This should have been moved in an earlier commit; was overlooked.
Generalize the HIRMonad.

Generalize and move the HIRMonad (now IRMonad) into Common.Utils.
Clean up hirDebugShowGraph.
Remove illegal phi nodes.

Once a basic block, B, has been removed; we don't need phi nodes that
have SSA variables incoming from B.  The RemoveBadPhis pass removes
those nodes.