Implement most of it, fix a bunch of bugs
also upgrade Point3D

only thing still unimplemented is checking if a point is part of a
polygon