===============================================================
The implementation of BSpline differs from previous complex forms.
The BSpline is created constraint to be polynomic (non-rational), with radius of first circle and equality constraints.
Hide unused internal geometry considers as unused the following constraints:
- A pole which has equality constraints with another pole of the same bspline
- Any radius constraint on a pole
Deletion of a BSpline will delete the internal geometry that is unused as per the definition above.
If there is another constraint (other than the Internal alignment constraint) it will leave the internal geometry having such constraint undeleted.
A couple of combinations, endpoint-endpoint and endpoint-curve, do not
work, and the latter probably should not work ever since endpoint-curve-
curve exists.
Parallel constraints can also be made by select-then-constraint way.
Preliminary preparations for perpendicular constraint making mode.
Selection actually works when for constraints involving multiple
elements few of them are selected (thanks abdullah).
etc.
=================================================
This method creates the pole circles on every click. This allows to properly detect the closing of the curve
=====================================================================
Extension of Constraint Python code to consider the case with 4 ints, where the last int is InternalAligmentIndex for InternalAligment constraint
==================================================
Now the BSpline ends with right-click, but creates the BSpline if at least two poles have been entered.
If continous creation mode is enabled, then it only exits when right-clicking without having entered any pole.
===================================
In the unusual event that endpoint knot multiplicity is edited, avoid trying to force the bspline end-point
to match the corresponding control point (aka pole), as this leads to unsolvable sketches.