Adds a withIntrospection matcher which outputs contextual information for
better debugging. The format of the withIntrospection matcher's output is
open to debate.
This revision is intended for review, but also serves to demonstrate a use
case of the changes made in https://reviews.llvm.org/D113917, as these changes
allow for the withTag matcher to access the names of matchers.
std::move(BeforeTag), std::move(AfterTag)
No need to create additional copies of those strings. Here and other places