Rename: VecExt -> AnyVecExt, PntExt -> AnyPntExt.
Make `AnyVec` inherit from `Basis`.

Every vector must have a basis.
Rename: PartialOrd -> POrd, PartialOrdering -> POrdering.

This avoids name clashes with the standard library.
Remove the {Any,Float}{Pnt,Vec}Ext traits.

They are meaningless and too hard to implement in an ad-hoc way to be really useful.
Matrix Index/IndexMut implementation: return an element instead of a column.

There is no reason why indexing would prefer returning a column instead of a line. Instead, we
return an element, and let the user use the `Col` and `Row` traits istead.
Make FloatPnt and FloatVec derive from `Index`.

The point it that `Index` provides the i-th element decomposed into the trivial basis of their
associated vector spaces.
Move the `.shape()` method to its own trait: `Shape`.
Coding style fix.
Rename: Any{Vec,Pnt} to Num{Vec,Pnt} + do not impl them automatically.

Instead, implement them manually. This clarifies error messages for the users.
Add a `SquareMat` trait for square matrices.
Move the `eigen_qr` function behind the `EigenQR` trait.

This simplifies generic programming.
Basis: add a method to compute the i-th element of the canonical basis.
Always use `Cast<f64>` instead of `Cast<f32>`.
Do not automatically impl Scalar{Mul,Div,Add,Sub}.

This makes them implementable without using the double dispatch trick.