Allow reader, writer and printer to be passed in.

 * That also makes it trivial to suppress diff printing during test runs.
Revamp how matching/replacing strings is done
Introduce custom matcher (should internationalize) and refactor tests to use it
Refactor PatternMatcher internals
Move the remaining haml matchers
Ignore haml lines that evaluate ruby code
Fix an issue with leading whitespace in haml matchers
Match label and submit helpers with symbol names
Fix pre-tag content matcher
Let only one matcher match per input line
Remove all unused matcher-related files