Add Heap.hs. Represent Heap as (size, free-list, mapping of addresses to live objects)
Export fewer bindings from Format.hs and Parse.hs
First version of Template Instantiation evaluation strategy

Entry point is run :: Bool -> String -> String. Takes a verbose parameter
(should evaluator print stack?), program as a string, and returns the final
formatted value as a string.

Doesn't support let(rec), constructors or anonymous functions yet.

Examples:
    ghci> putStrLn $ run False "main = f x; f = I I; x = 12"
      NNum 12
    ghci> putStrLn $ run True "main = f x; f = I I; x = 12"
      State 1:
          #1: NCombinator main
      State 2:
          #10: NApp #2 #3
      State 3:
          @--- #3: NCombinator x
           \
            #2: NCombinator f
      State 4:
          @--- #3: NCombinator x
           \
            #11: NApp #4 #4
      State 5:
          @--- #3: NCombinator x
           \
            @--- #4: NCombinator I
             \
              #4: NCombinator I
      State 6:
          @--- #3: NCombinator x
           \
            #4: NCombinator I
      State 7:
          #3: NCombinator x
      State 8:
          #12: NNum 12