gh-41287: Improve normalization and inverse handling for Laurent Polynomials
Fix #41282
1. `has_inverse_of(i)` called `_normalize(i)` which mutated self, even
though it should be a read-only query
2. `_normalize(i)` had a bug: it divided `_poly` by `gen(i)` once
instead of by `gen(i)**e`
3. `has_any_inverse()` only checked `_mon` without considering if the
representation was non-normalized
4. `__call__` evaluated `_poly` directly, which gave wrong results for
non-normalized representations
<!-- ^ 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". -->
### :memo: Checklist
<!-- Put an `x` in all the boxes that apply. -->
- [ ] The title is concise and informative.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] 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/41287
Reported by: Chenxin Zhong
Reviewer(s): Travis Scrimshaw