Implemented Basic Assembler Internals

The guts of the assembler are basically working at this time,
asm.Assemble is working for every test case I've come up with.  The
one bug I've found so far is that I get an incorrect line number on
error messages for invalid opcodes alone on a line.  I'm assuming this
is just an artifact of the way go yacc is generating the parser, and
I'll probably just write a special case addOpcode function for it if I
can't find a more elegant solution.