add dir for example programs
fix non-exhaustive match in Type.compare

Type.list will treat a non-empty list as "greater" than an empty one
fix non-exhaustive match in Typecheck.applySubToAst

also add Maml module with Maml.CompilerBug exception
delete commented out code
fix non-exhaustive match in Typecheck.prettyPrintConstraint

print user-defined datatypes as Ctor{field,field,...}
add CM artifact to gitignore
fix non-exhaustive match in Typecheck.genCon

fix in nested function `gen` inside genCon, for handling branches of
`case` expression

fix in genCon for handling `let`
fix non-exhaustive match in Typecheck.gettyp

also simplified by calling AST.Expr.getInfo instead
fix non-exhaustive match in Typecheck.assignTypeVars

also add field to AST.Expr.Let for bound variable's position