Byte code compiler and stack-based interpreter

All of the primitive expressions are supported, including if, quote,
set!, define, lambda, begin, atoms, symbols, and applications.
Everything is compiled to a set of primitive byte codes that are run
in a stack-based virtual machine.

The compiled byte code also includes location information, although it
may need some adjustment if it proves too inaccurate.

De/serialization not yet implemented. Tail recursion not yet tested.

Tests pass