rendering is now performed in a separate thread. this is of little use now but lays the groundwork for adding parallel rendering. i just need to think about data ownership a little harder to make the tile renderer nice.
no change in functionality, but preparing for stuff in the near future like more accurately modeling film sensors, filtering, color science, etc.