New Intersection stuff

Replaced the old IntersectVisitor with a new IntersectionVisitor which gives support to add different types of intersector. 

The LineSegmentIntersector replaces the full functionality that the old intersector had. Including KD-trees. 

The PolytopeIntersector mimics the OSG one, now the user can 'pick' points and lines, and also triangles.

Added a PrimitiveFunctor class to get access to the primitives of a Geometry, something like the TemplatePrimitiveFunctor class in OSG. 
Well, I think I understand your point, but in my opinion having inheritance complicates things a little bit. This callback is more or less like having a lambda function. And it's really easy to use it. In fact you used that idea  in the previous intersector stuff, so I followed the same guidelines :)