AngleViaPoint: adding generic CalculateNormal() method

* Reconfiguration of GCS geometry classes: adding a base class "Curve",
that has a pure virtual function CalculateNormal().
* Initial inplementation of the new function.
* adding Vector2D class (I wanted to reuse the existing, but got wierd
compile errors, so implemented a new one... TODO.)
AngleViaPoint: extra preparations in Geo.h/Geo.cpp

Adding redirection support into GCS shapes. Adding a Copy method to
GCS::Curve.
AngleViaPoint: the actual constraint (preliminary)

No automatic point-on-curve.
Some partials are still numeric.
Bugfix Ellipse::CalculateNormal.