Refactor HIR.hs.

Introduce `termToHIR :: Term -> Maybe (M [HFunction])` and export a
sensible set of types and functions from the HIR module.
Add an OPTIONS_GHC pragma to HIR.hs.

HIR.hs requires -XGADTs and -XRankNTypes; and since I don't plan to
support anything other than GHC, sticking them in a OPTIONS_GHC pragma
looks like the cleanest approach.
Reorganize source tree.

Sort source files into Source/ and HIR/.
Use the LANGUAGE pragma instead of OPTIONS_GHC.

This is the more canonical way to specify -XLanguageFeature options in
GHC source files.
Have HIR.hs compile with -Wall and -Werror.

Some -fno-warn-* directives are needed to prevent warnings that are
spurious in this specific case.
Export debug functions from HIR.hs.

To make their purpose clear, the debug tools have been prefixed with
'hirDebug'.  We also remove the now unnecessary -fno-warn-unused-binds
switch.
Make Ast.hs -Wall -Werror compliant.
Make Parse.hs -Wall -Werror compliant.
Add a basic Hoopl constant propagation and folding pass.

The constant propagation and folding pass is a forward pass implemented
on top of Hoopl.  There still are things we don't do yet: for instance
we don't "look into" if conditions.  So

        if x == 5 then goto L1 else goto L2
    L1: y <- x + 2
        ...

doesn't get optimized into

        if x == 5 then goto L1 else goto L2
    L1: y <- 7
        ...
Add Main.hs and some utility scripts.

make isn't too useful here -- we simply leech off ghc's --make command
line switch.
Add .gitignore