Assembler abstraction

started work on moving assembly instructions out of the main compiler
and into its own module. Afterwards, it should be possible to support
different architectures and assembly syntaxes.