Adding the boost headers necessary for boost::optional.
Some of them are superfluous but I didn't feel like going through all the files.
Added a ray class.
Added an axially_aligned plane class (to make finding more complex intersections easier).
Converted Intersection to NakedIntersection and aliased boost::<NakedIntersection> to Intersection to make it a bit more friendly.