SingleBlockImplicitTerminator is now a combination of two traits: SingleBlock and SingleBlockImplicitTerminatorImpl (the original SingleBlockImplicitTerminator).
This change makes it possible to check if the SingleBlock op trait is implemented. Until now, Operation::hasTrait<OpTrait::SingleBlock>() returned false for ops that implement SingleBlockImplicitTerminator.
Discussion: https://discourse.llvm.org/t/optrait-inheritance-should-be-discouraged/73100