add fast Cython version of intersection test and start moving low-level functions into a seperate _vectorgeo module