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. 
Yes, I did it for a reason, I had not clear how to do a method overload, for example (handle (v1) | handle (v1,v2) ) in osgjs the normal technique is to change the method name as I have seen. I had two options
1. Pass a vector and avoid to have diferent methods (point, line triangle): PROS we only would use one method in the callback. CONS: the code turns out pretty ugly with different "if else blocks." 
2. Use the callback with different methods depending  on the number of vertices. PROS: readable code, and fixed lenght of arguments. CONS, 3 different functions in the callback.