On debug build the worker thread stack overflows upon
thread launch with default stack size even though the
closure is only 130K. I don't know why this happens
but moving the buffers to the heap solves the problem.
Many many changes. The major themes of the refactor were to move the
x86 specific code into a separate 'arch' package and make the main
initialization and run loop much simpler to understand. The second big
change was to improve how errors are handled by making them more 'local'
so that packages define their own errors most of the time.