This is similar to Martin von Zweigbergk's previous patch [1].
Previous patches are adding more .unfiltered() to the rebase code. So I
wonder: are we playing whack-a-mole regarding on unfiltered() in rebase?
Thinking about it, I believe most of the rebase code *should* just use an
unfiltered repo. The only exception is before we figuring out a
rebasestate. This patch makes it so. See added comment in code for why
that's more reasonable.
This would make the code base cleaner (not mangling the repo object),
faster (no need to invalidate caches), simpler (less LOC), less error-prone
(no need to think about what to unhide, ex. should we unhide wdir p2? how
about destinations?), and future proof (other code may change visibility in
an unexpected way, ex. directaccess may make the destination only visible
when it's in "--dest" revset tree).
[1]: https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-March/094277.html