feat(algebra/free_algebra): Add a ring instance (#4692)
This also adds a ring instance to `tensor_algebra`.
The approach here does not work for `exterior_algebra` and `clifford_algebra`, and produces weird errors.
Those will be easier to investigate when their foundations are in mathlib.