ref: 3f71c019bc3fd13360c650cd69e5e211660db158 Carth/app d---------
Add basic import system. Basically C-style include
Separate desugaring stage

I think it will be particularly useful later when adding a check for
type vars being bound after inference. Also, will be nice if more
sugar is added later.
Remove interpreter. Won't be compatible with foreign functions

May re-add it later, but not for general usage, but just evaluation of
pure expressions when doing codegen for global, non-function variables
and in other constexpr contexts.
Impl sizeof with getTypeAllocSize. sizeof :: Type -> Gen Word64

This is much better than sizeof :: Type -> Constant, and will allow us
to much more easily implement unions in LLVM.
`printErr : ... -> IO ()` to `prettyErr : ... -> Source -> String`

Instead of reading the source file (for the second time) via IO, pass
along the source we got in Main
Remove noisy stdout output & Improve formatting of err msgs
Mark offending section of offending line in type errors

by applying the parser at the sourcepos of the item, and counting how
long the consumed input was to get the span of the item in the source.
Print offending line in type error msg
data TypeErr = OtherErr String | PosErr SourcePos String
Change Parsec to Megaparsec

Seems to be better all-around
fix tests: Readd Pretty impls for Ast & inst Arbitrary for ConstructorDefs
Unabstract Annot.hs*(Check.hs+Mono.hs) into AnnotAst.hs+MonoAst.hs
Explicit export of main in Main & rm unused import in Mono
Literate programming: Compile .org by untangling carth src blocks
Fix self-recursion due to type in interpret'
Add some progress prints
Keep Pretty instances together instancees
Compile binary w cc in Compile.hs & Improve command line interface
Write some debug output to files instead of printing
Separate codegen and compilation in app