Rewrite of executor; handles typeclasses, I/O, FFI, laziness

All tests pass on both (my particular setup of) Mac OS X and on Ubuntu, at least.