This revision adds two new classes, IRRewriterImpl and IRRewriter. IRRewriterImpl is a new shared base class between IRRewriter and PatternRewriter. PatternRewriter will continue to be the base class used to perform rewrites within a rewrite pattern. IRRewriter on the other hand, is a new class that allows for tracking IR rewrites from outside of a rewrite pattern. In this revision all of the old API from PatternRewriter is moved to IRRewriterImpl, but the distinction between IRRewriter and PatternRewriter is kept on the chance that a necessary API divergence happens in the future.
This revision will enable the creation of utilities that can be invoked from in rewrite patterns and normal transformation code.
Depends On D94632