Switch the call stack from a list to an array.

This makes it simpler to copy in callcc
Some work on making error throw
Use a global to hold the vm during evaluation rather than passing it around.

I quite like this since it makes many functions look like thunks,
ready to convert to byte code.
Get error to jump back to the main eval loop