add a code generator class

This class encapsulates all byteplay code generation. It's useful to
help cleanup the compilers now that they are growing in complexity.
simplify the CompilerBase

this updates the CompilerBase with a CodeGenerator attribute and removes
the code generation utilities of the compiler.
cleanup the EnamlCompiler to use a code generator
update comments
start rework for code generator