Refactor library import
Use dot to separate library name parts
Refactor import bindings

Stop using that silly array format
Fix the map function so it handles multiple list args

This work exposed a serious flaw in my approach to the compiler. Up
until now I could get away with fundamentals like `car`, `cdr`, etc.
being macros, compiled directly into vm instructions. But that's not
right; these can be passed around like lambdas in Scheme, so I need to
rethink my approach.

The dirty hack I used here is to wrap the macro in a lambda, but that is
SLOW! The test suite now takes nearly twice as long to run.
Fix bug defining bindings in a libary
Just add a library that will be helpful later
Eliminate some variables we aren't using
Extract file loading from Compiler
Some small fixes to loading/including libraries
Focus lib specs also
Refactor for easier porting/debugging

* Remove code paths that allow parsing/compiling/executing *additional* code
  subsequent to initializing the object.
* Remove caching of standard library in specs to feel the full pain of slow
  parsing/compiling.
* Move parsing of code responsibility back up to the Program object --
  Compiler delegates back up to the parent Program if it needs to parse
  new code. This separation of concerns could be further improved.
Refactor error printing
Show better error when calling something other than a lambda
Show better error when calling undefined
Add more char functions
Add case insensitive char comparision functions
Rewrite list=? function to be a bit faster

We don't need to check the length on every recursion loop.
Improve lib spec failure message
Support all character names in the spec
Next