Snapshot of OOP branch

Switch to precedence climbing for parsing and use list objects to
represent code.