Store 4 dimensional vectors in ray
Add Vector4d constructor for Ray class

If I remember correctly, converting between Vector3d as stored in the
Ray class and Vector4d as needed for transformations with a 4x4 matrix
was being done for every intersection test.

Storing the ray origin and direction as Vector4d from the start uses a
tiny bit more memory, but saves a lot of computation.
Merge branch 'ray4d'
Reorder Renderer member variables
Parameterize width, height, and projection angle in Renderer
Move raytracer code to Raytracer class

Separate actual raytracer code that shoots rays, handles lighting,
generates an image, etc from code that manages displaying the generated
image.
Support arbitrary transformations in TransformNode

Allow the TransformNode class to store an arbitrary transformation,
while still supporting subclasses for specific transformations.
Add Camera class

Add a basic Camera class that can take eye, look and up vectors and
return a transformation matrix to convert world coordinates into camera
coordinates.
Add Camera class tests
Add camera to main

Don't change the default eye, look, or up vectors, but add the Camera
class to allow the parameters to easily be changed.
Store camera coordinate axes in Camera class
Add slide method to Camera class
Add Camera::Slide() test
Add second Camera::slide() test

Include a test where the conversion from world to camera coordinates is
more than a simple translation. In particular this checks that the world
to camera and camera to world transformations are applied in the correct
order.
Add Camera::rotateAroundEye()
Add a test function for Camera::rotateAroundEye()
Give clearer names to camera tests
Merge branch 'cameraClass'
Add OpenMP declaration back to main raytracer loop

It was removed when including the Raytracer refactoring
Add Scene class