CartesianObjects. Point and Vector are CartesianObjects

This new interaface will allow Point and Vector to be
consolidate any shared code/responsibility
Rename CartesianObject to Cartesian

Easier to read
GeneralPoint is a CartesianObject

This allows GeneralPoint to share a lot of its
implementation
GeneralVector is a CartesianObject

This allows GeneralVector to share much of its
implementation
VectorXDs now return VectorXD instead of Vector<DX>

This makes using the VectorXD classes useful instead
of forcing the user of the API to switch from the
two different formats
PointXDs now return PointXD instead of Point<DX>

This is the last hurdle in making the PointXD classes
useful