Plane class

# TODO

- [x] test coverage
p1 might be a tuple and should be made into a Point3D, too, right?