Updated TODO.
Split Ray into two structs: "Ray" and "WorldRay".

This is a refactor in preparation for ray stream tracing with transforms.
We don't want to keep a stack of transformed rays for every ray, as that
would take up far too much space.  So instead we'll keep the world-space
ray and a transformed ray.  When the ray needs to be transformed, we
always do it from world space.

The Ray's themselves are also going to be reordered, so we don't want
the extra weight of the world-space rays inside the Ray struct itself.
Instead the Ray will hold an "id" that lets us index to the world-space
ray when we need to do a transform.

It's a little involved, but hopefully will be worth it.
Initial (and broken) ray stream tracing implementation.

The code currently segfaults, totally failing to render.  But it compiles!
Fixed nasty (but stupid) segfault bug.

Now scenes render, some of them almost correctly.  But some scenes are
clearly very, very wrong (especially the cornell box).
Fixed the major illumination bug.

There are still some render errors, which appear at first glance to be
similar to the surface splitting errors I've seen before.  Getting closer
and closer to correct renders, though!
Cleaned up BBox intersection code, for a small speed boost.
Refactored PathTraceIntegrator so that each path maintains its own state.

This make the code a lot easier to work with, and separates the specific
path tracing algorithm from the rendering loop.
Fixed the nasty "splitting" rendering artifact.

Turned out it had nothing to do with splitting.  The shadow rays were getting
their max_t values modified when they shouldn't have been.  Specifically,
they were being modified to inf, which was causing them to register hits
the second time they were tested against a primitive.
Early out for shadow rays.
Small optimization, to avoid unnecessary ray partitioning.
Made SAH bvh splitting compile again.

It's still pretty broken (produces worse trees than mid-split).  But figured
I might as well get it compiling with the new code.
Updated TODO
Refactor of scene object system.

This is in preparation for the new scene graph implementation, which
will support transforms, instancing, etc.
Made sphere's work again.
Fixed bug in sphere intersection code.

The sphere wasn't propigating ray width information.
Fixed bug in sphere intersection code.

The "backfacing" bool of the intersection wasn't being set, resulting
in incorrect bounce ray directions.
Made indentation consistent in top-level CMakeLists.txt
Updated TODO