Def assembler.assemble_code().

books/nand2tetris/projects/6_assembler/assembler/assemble.py
	-Define `assemble_code()`, which contains the assembler's core
	logic and aggregates all of its other components.
	-Currently contains calls to inexistent modules.
Add an instruction module.

books/nand2tetris/projects/6_assembler/assembler/instruction.py
	-Add an instruction module, which handles instruction parsing
	and encoding.
	-Define a `parse_instruction()` function, and two classes:
	`AInstr`, and `CInstr` (the two instruction types supported by
	the Hack language).
Add a prototype symbol_table module.

books/nand2tetris/projects/6_assembler/assembler/symbol_table.py
	-Add a module to maintain the assembler's symbol table.
	-Contains a `SymbolTable` class, which implements most of its
	required functionality with several methods (`add_variable()`,
	`add_label()`, etc.).
Add a general-purpose parsing module.

books/nand2tetris/projects/6_assembler/assembler/parser.py
	-Add a module that contains various helpful parsing functions.
	-Contains `clean()`, `parse_label()`.
Redef CInstr.from_string(). Def AInstr.to_binary().

books/nand2tetris/projects/6_assembler/assembler/instruction.py
	-`CInstr.from_string()` was mis-implemented, not accounting for
	statements that have *both* a `dest` and `jump`. Redefine.
	-Implement `AInstr.to_binary()`.