This revision removes all of the CRTP from the pass hierarchy in preparation for using the tablegen backend instead. This creates a much cleaner interface in the C++ code, and naturally fits with the rest of the infrastructure. A new utility class, CRTPPass, is added to replicate the existing behavior for passes not suitable for using the tablegen backend.
Depends On D77339