@samphippen's wrap up of #311: syntax agnostic message matchers

Making an actual PR out of this branch so I can leave comments on the whole diff.