~jojo/Carth

Remove DWARF debugging metadata in LLVM output & make funcs External

Multiple reasons for removing the debugging symbols. 1) The
implementation was only partial and buggy. Line-by-line stepping
didn't work well, quite jumpy and buggy. 2) I'm not sure the
line-by-line stepping even *could* have worked well, due to the
expression oriented nature of the lang. 3) Having to remember source
positions this long is cumbersome. 4) less code for any reason =
good! 5) Even without the metadata, as long as the functions are
External (is this really required? I think so, but may be possible to
work around) the function names will be visible in gdb, and that's
really all that I need / can use that works well.
Don't generate simply numbered locals in LLVM

I.e., no more UnName 8 => "%8". Instead Name "tmp_8" => "%tmp_8". This
fixes the issue that LLVM expects all simply numbered locals to be
defined in order and without gaps. This means our .dbg.gen.ll won't
compile, which could have been useful.
Fix LLVM function visibility issue

Tried to compile the generated .ll. Clang was complaining when it was
both Private and Hidden. Just setting visibility to Default fixes
it. Don't think this is a problem, but I guess we will learn.
Refactor Def, Inst related stuff & fix debug AST print bug

Felt (Inst, WithPos _) was more appropriate than WithPos (Inst,
_). Also, fixed `ice` in Lower.lowerFun triggered when printing AST in
debug mode.
Move beta reduction from Codegen to Lower
Duplicate AST defs from Monomorphic to Low

Also had to add a bunch of basically no-op translation in Lower.hs
just to fix the types. Atm it's pointless, but it will serve as a base
to work on as the Low AST drifts from the Monomorphic AST.
Simplify Codegen by using classes for the tail-call stuff
rename Optimize{,d} -> Low{er,}
update TODO
Update TODO
Add class Select

Pass some params implicitly when doing selections
Update stackage release & use default-extensions in cabal file

Also, fix some minor breakages caused by ghc update, fix the
literate.org example, fix some new warnings, and get rid of the need
for a bunch of Data implementations by using basic parsing functions
in SystemSpec.hs.
remove no longer applicable TODOs
update TODO
std: add TODO comment
std: add show-bool, id
std: use io/wrap instead of io/pure for display-inline

I.e., don't execute the action untio the IO is run
Add let & let1 forms to do macro
update TODO
Add test for latest bug fix
Next