update to reflect changes in the type matrix system
fix incorrect usage of binop, it's <dst op val> not <op dst val>
rework to pass TA test cases

- Use symbols rather than strings for the sake of pretty printing
- Add makeprogn-v which does not do creation time progn optimization
- Tweaks to abs-name to allow for invocation with a map
- Tweaks to makeif to optimize out trailing nil groups
tweak to use symbols over strings again, pass test cases
better file hierarchy writeup
format big block as code so that it'll look ok on GH
updated todo list, a few down!
"better" pretty printer which deals with nested symtabs & entries
some even nicer formatting
gfredericks set me right on the ^:dynamic thing

I should really just have a map that represents the entire compiler state and
be passing that around like it was your mother doing the multiple return
values thing to transform it & thus sequentially propagate the changes. Using
atoms this way is really abusing them, they're designed for synchronizing
concurrent access not for implementing single-threaded side effects.
add line prints to separate the symbol table at the bottom
update so that it doesn't die trying to rebind *symtab* etc.
rename so that I don't have two trivb cases
update graph1-pas literals to match current symbol table
add a symbol table reset side-effect
fix an extra nested group with a makeprogn

Fixed a case where repeat could generate a (& exprs) sequence by causing it to
invoke makeprogn in-place. This means that I'll get an extra progn group which
the test cases will have to be updated to reflect but that's acceptable.
patch abs-name to handle maps not containing qname correctly
tweak the behavior of the constant-declaration to match standard
tweak to show new progn group which repeat generates
god it makes me happy to see my implementation be correct and the tests be wrong