gh-38254: Extend the method get_knotinfo of the Link class to cover non-prime knots
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes #12345". -->
This PR implements a task from the following code-comment in `link.py`:
> # ToDo: extension to non prime links in which case an element
of the monoid
> # over :class:`KnotInfo` should be returned
In connection with this I switch the output of `get_knotinfo` to
elements of the new class `FreeKnotInfoMonoid` for all knots (prime or
not) For multi-component links I keep the output as it is, since the
`FreeKnotInfoMonoid` does not make sence here.
Another thing changes: Currently, if the `unique=False` option is used
symmetry mutants may be listed separately, even though they are known to
be isotopic because their symmetry type is reversible or amphicheiral.
Now, if symmetry mutants are known to be isotopic because of their
symmetry type, just the minimal of them is listed (in the order of the
enum).
### :memo: Checklist
<!-- Put an `x` in all the boxes that apply. -->
- [x] The title is concise and informative.
- [x] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] I have updated the documentation and checked the documentation
preview.
### :hourglass: Dependencies
<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - #12345: short description why this is a dependency -->
<!-- - #34567: ... -->
URL: https://github.com/sagemath/sage/pull/38254
Reported by: Sebastian Oehms
Reviewer(s): Sebastian Oehms, Travis Scrimshaw