Add CSG.

Make "distributed ray tracing" implementation more complete.  Sample for
depth of field, gloss, etc.

Keep track of maxt for a given ray and pass it to the various
intersection routines.  For example, we can stop traversing a height
field grid if the ray hasn't hit the height field by the time we're
"maxt" along the ray.

Keep track of the primitives hit for (at least a portion of) the ray
tree.  When spawaning a new ray, check for intersection with the primitive
last hit by the corresponding ray in the saved tree.  If it hits, you have a
value for "maxt" for the above.

Make heightfields be stored in fixed-point, and take care of byte-ordering
problems so that height fields are transportable from machine to machine.

Implement something similar to Jevans & Wyvill's adaptive subdivision scheme.

Add better antialiasing (e.g., Mitchell's paper).

Add a better way to do continue an interrupted trace.  There should be code
in rayshade to find the number of the last line traced and start from
there.

Add an option to perform sorting during ray/List intersection tests so
we test objects roughly in order.

Improve handling of input files (error messages, #include directives, etc.).
