make task and exception state thread-local

allocate a root task for each thread

this allows threads to use exceptions, and starts integrating threads
and tasks. and test/laplace3d.jl no longer crashes if it throws an error.

a couple helpful tweaks to laplace3d