Forgot one of the places that make_intersection could've been used.
Added a make_simple_intersection. I anticipate there being cases where We'll only care about an intersection existing and not what was intersected so I wanted to make this wrapper around boost::optional.

I also made it so that you can simply call make_intersection<Plane>() and that will return an intersection that resolves to false. This was mostly done for the sake of symmetry.