get intLangExtraTheory working with new free_vars def
make explicit the compiler_state only holds CTLet bindings

because we don't want to have to go looking at the heap in the
printer... and shouldn't have to
make total version of the take a default value for the none case
make the cpam an association list rather than finite map

this is the map from tags (numbers) to constructor names.

also, make it to strings rather than ids. at the moment they're all
short, and we may only want the short part of the name anyway..
thus observable values (OConv) now have strings instead of ids for
constructor names.
repackage the printer: should be ready for translation+assembly

The last thing print_result does now is call simple_printer on two
alists (vars to stack locations, and tags to constructor names) and the
machine stack.