Optimize Color::toRGB32 (which improves rendertime significantly).

This optimization is needed for the interactive mode.
The function displayVFB() uses Color::toRGB32(), which relies on
convertTo8Bit_sRGB, which applied sRGB compression to the output
pixels. The gamma-compressed part of the colorspace required
powf(), which is quite slow if you need to run it against several
million pixels per second. To optimize, cache the results at
4096 points between 0 and 1 and use that lookup table instead of
the true pow().

testmesh.trinity at 320x240, single-threaded, improved from 6.80 to
8.60 fps (~25%) on my machine.
Only calculate backface culling if required (optimizes 2% of rendertime).
Only compute AB ^ AC once in intersectTriangle*().
Slightly rearrange return statements in Mesh::intersectTriangle.
We can calculate lambda2, lambda3 and gamma in any order; however,
we want to test gamma as quickly as possible, to prune against
negative values, or values that don't optimize the closest intersection.
Avoid division.
Pass Ray to raytrace by reference, instead of by value (~1% speedup).
Precompute triangle's AB, AC and AB^AC vertices inside Triangle.

This avoids the need to compute them in Mesh::intersectTriangle,
which optimizes the rendering by about 10%.
Eliminate some divisions in BBox intersection methods.

Since divisions by ray.dir.(x|y|z) happen a lot, it's beneficial to
compute the reciprocal of ray.dir before the intersection calculation.
This is made with a special, augmented Ray class (RRay).

The same kind of optimization can be implemented in other parts of the
raytracer, but doing it globally makes no sense: RRay::dir and rdir have
to be kept in sync, which is too much work to do (esp. through
model-view transformations).

This optimization sheds about 2.5% of the render time.
Pass Ray by reference (instead of by value) to Shader::shade and Geometry::intersect.