Line3D class

This PR is a work in progress, contains a `base` class along with `Line3D` and `Segment3D` classes.Yet to add more methods and `Ray3D` class along with tests.
Why are you overloading the constructor? Why not use helper methods for these?

@smichr, I would like to refer to you here. Is the standard for the geometry module to overload constructors to be able to accept a lot of different inputs (instead of using class methods line `from_LinearEntity` or something like that)? I slightly prefer the use of helper class methods instead of an overloaded constructor, but I guess it is more important to keep the new code in the same style as the code already present in the module. Which approach would you prefer / which approach is the traditional within the module?