fix(tactic/induction): fix multiple cases'/induction' bugs (#7717)
* Fix generalisation in the presence of frozen local instances.
Any time we revert a potentially frozen hypothesis, we now unfreeze local
hypotheses during the operation. This makes sure that generalisation works
uniformly whether or not any local instances are frozen.
* Treat local defs as fixed during auto-generalisation
induction' gets confused if we generalise over local definitions since they
turn into lets when reverted. Ideally, we would handle local defs
transparently, but that would require a lot of new code. So instead, we at
least stop auto-generalisation from generalising them (and their
dependencies).
* Handle infinitely branching types
induction' and cases' previously did not acknowledge the existence of
infinitely branching types at all, leading to various internal errors.
New test cases for all these bugs, due to Patrick Massot, were added to the test
suite.