Create Rip::Compiler::Driver to manage execution

Stub in blank Rip::Nodes::*#interpret method for now
Stub in core classes
Implement Rip::Nodes::Integer#interpret and Rip::Core::Integer#==
Simplify Rip::Utilities::Scope by removing nil
Implement Rip::Utilities::Scope#==
Implement Rip::Nodes::BlockBody#interpret
Implement Rip::Nodes::Module#interpret
Implement Rip::Notes::Reference#interpret
Implement Rip::Core::Boolean.{true,false}
Refactor and test Rip::Compiler::Driver#global_context
Implement Rip::Nodes::Assignment#interpret

Also implement Rip::Nodes::Reference#interpret_for_assignment to take a
block and perform the assignment

Also implement Rip::Core::Base#{initialize,==,[],[]=,properties} to
assist with object property management
Implement Rip::Nodes::Character#interpret and Rip::Core::Character#==
Implement Rip::Notes::Property#interpret

Only test for looking up invalid property
Implement Rip::Nodes::Property#interpret_for_assignment
Start implementing a class for Integer
Implement Rip::Core::Class.class_instance
Add `.class` property to Rip::Core::Integer.class_instance, pointing to Rip::Core::Class.class_instance
Class instances need a prototype property
Search the object's class's prototype when property not found on the object directly

Have to add basic implementation for Rip::Core::Character.class_instance
to keep existing tests from failing
Construct Rip::Core::Lambda objects like all other Rip objects