Implement an actual Compiler pipeline, use it to simplify test matchers

All I wanted was implementing failNamingWith without code duplication, it kinda escalated from there...