Reimplement multithreading, scrap samplers.

* Each thread now has its own framebuffer and renderer.
* This was needed so that renderer could splat colour on
  arbitrary locations on framebuffer (needed for lighttracing).