gh-38027: Work on `FlatsMatroid`
Add class-optimized `_closure` and `_is_closed` methods.
Add input handling of a list of flats, and of a lattice of flats. Note
that previously one could only define a `FlatsMatroid` from a dictionary
of flats (indexed by their rank). The definition from a raw list
requires more time upon definition as it computes and stores the lattice
of flats from the input list. On the positive side, given this lattice,
some methods become blazingly fast (e.g., `is_valid`,
`whitney_numbers`).
The lattice of flats is now cached upon computation.
### :memo: Checklist
- [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.
URL: https://github.com/sagemath/sage/pull/38027
Reported by: gmou3
Reviewer(s): gmou3, Travis Scrimshaw