Add notes for chapter 11 of nand2tetris.

books/nand2tetris/notes/11_compiler_ii_code_generation.md
	-Add notes for chapter 11, "Compiler II: Code Generation" of
	nand2tetris.
Change project 10 dir to include project 11.

books/nand2tetris/projects/
(10_compiler_i_syntax_analysis -> 10_11_jack_compiler)/
	-Rename `10_compiler_i_syntax_analysis/` to
	`10_11_jack_compiler`, since both chapters' projects concern the
	same Jack Compiler.
Rename compile_ast() to compile_cst().

10_11_jack_compiler/jackcompiler/(compiler, )/__init__.py
	-Rename `compile_ast()` to `compile_cst()`, since it operates on
	a /Concrete/, not Abstract, Syntax Tree.
Remove unused syntax.ast module.

10_11_jack_compiler/jackcompiler/syntax/ast.py
	-Remove a module that was meant to contain functions for
	using/manipulating an abstract syntax tree. Turned out to be
	unnecessary in the architecture of the compiler, as operations
	are performed on the raw parse tree (concrete syntax tree).
Flesh out jackcompiler.compiler subpackage.

10_11_jack_compiler/jackcompiler/compiler/__init__.py
	-Add content to `compile_cst()`; still a WIP.

10_11_jack_compiler/jackcompiler/compiler/vmwriter.py
	-Add a `vmwriter` module, with a partly implemented `VMWriter`
	class, which'll abstract away raw virtual machine code.
Add WIP compile_node and symbol_table modules.

10_11_jack_compiler/jackcompiler/compiler/compile_node.py
	-Add a module that will contain functions to compile various
	`parser.ParseTreeNode`s.
	-Currently contains the following such functions:
	`_compile_varDec()`/`_compile_classVarDec()`.

10_11_jack_compiler/jackcompiler/compiler/symbol_table.py
	-Add a module with a `SymbolTable` class, which allows variable
	management.
Remove debugging code from compile_node module.

10_11_jack_compiler/jackcompiler/compiler/compile_node.py
	-Remove some debugging/testing code: the `Tmp` class, and a
	bunch of statements from `_compile_varDec()` and
	`_compile_classVarDec()`.
Define untested ParseTreeNode.__getitem__().

10_11_jack_compiler/jackcompiler/syntax/parser.py
	-Define `ParseTreeNode.__getitem__()`, which should make
	child-node access cleaner and more readable in some situations.
Tweak config to output VM code instead of XML.

10_11_jack_compiler/jackcompiler/
(__init__, __main__, compiler/__init__.py)
	-Tweak the compiler architecture to write VM code to a `.vm`
	file rather than XML to an `.xml` file.
Add convenient features to syntax.parser.

10_11_jack_compiler/jackcompiler/syntax/parser.py
	-Add convenience methods `filter_token()` and `count_nodes()` to
	`ParseTreeNode`, which will make code in the `compiler`
	subpackage cleaner.
	-Add some more hierarchical grammar rule names to the Jack
	Grammar, to make operation on them easier.
Add undocumented compiler.vmwriter module.

10_11_jack_compiler/jackcompiler/compiler/vmwriter.py
	-Add a module that facilitates writing and abstracts away
	Virtual Machine code.
	-Lacks documentation.
Document the compiler.vmwriter module.

10_11_jack_compiler/jackcompiler/compiler/vmwriter.py
	-Add comprehensive docstrings to `_write_vm()` and `VMWriter`.
compile_node able to compile Seven.

10_11_jack_compiler/jackcompiler/compiler/compile_node.py
	-Define and revise a number of `_compile_()` functions in
	the `compile_node` module. It can now successfully compile the
	`Seven` test program provided by nand2tetris.
Define ParseTreeNode.__contains__().

10_11_jack_compiler/jackcompiler/syntax/parser.py
	-Define the magic `__contains__()` method for `ParseTreeNode`
	to allow verifying whether optional nodes are present in a
	parent node.
Define more VM write methods in vmwriter.

10_11_jack_compiler/jackcompiler/compiler/vmwriter.py
	-Define `label()`, `goto()`, and `if_goto()`.

10_11_jack_compiler/jackcompiler/compiler/symbol_table.py
	-Add a label UID counter as a `SymbolTable` instance variable
	to generate unique labels for flow control.
compile_node able to compile decimal-to-binary.

10_11_jack_compiler/jackcompiler/compiler/compile_node.py
	-Define more `_compile_*()` methods; `compile_node` can now
	compile the decimal-to-binary test program provided by
	nand2tetris.
Add method/constructor object pointer handling.

10_11_jack_compiler/jackcompiler/compiler/compile_node.py
	-Add support for setting object pointers in class methods and
	constructors.
compile_node able to compile SquareDance.

10_11_jack_compiler/jackcompiler/compiler/compile_node.py
	-Handle method calls from within a class correctly, by passing
	them the additional `this` argument. The `compile_node` module
	now successfully compiles the SquareDance test program provided
	by nand2tetris.
compile_node able to compile Average.

10_11_jack_compiler/jackcompiler/compiler/compile_node.py
	-Add support for array-index expressions and string constants.
	The `compile_node` module can now compile the test Average
	program provided by nand2tetris.
compile_node able to compile Pong.

10_11_jack_compiler/jackcompiler/compiler/compile_node.py
	-Fix a bug in method argument handling, where the implicit
	argument pointing to the object to operate on WAS accounted for
	in setting `pointer 0` accordingly, but not added to the symbol
	table such that all other arguments started at index 1 (not 0).