Use oop for objects

Changes made to Spooner:
* Use precedence climbing to parse code
* Instead of using a stack to evaluate RPN code, expressions are represented as SpLists and evaluated recursively
* Each type of object is a class in C++, all derived from the base class SpObject
* Switch to lexical scoping to allow for closures future development
* Use exceptions for runtime and parse errors
* Use the 'with' special form to declare variables