tailrec'd the TerminationMatcher retry

This allows us to have an arbitrarily large number of retries in a `TerminationMatcher`. Previously a too-large number of retries would overflow the stack.

A new test with 100,000 retries has been added. Sometimes stability issues emerge in the `TerminationMatchersSpec`.