* Port check_grep.sh from an increasingly complicated shell script to Python.
* Exclude dmdoc-formatted multi-line comments from whitespace check
* Add comment exception for both WS rules
* Fixed mixed tab/space regex.
* hate hate hate hate
* Add doctests to preserve my sanity
* Remove checks involving newlines.
* Add back newline-involved tests. Cry.
* Several large-scale changes.
- Remove all the map-related changes for now, in order to get the
code formatting changes in sooner and prevent more issues from leaking
in while the PR issues are burned down.
- Flip the method for processing files. Instead of trying to sort errors
by type, running over each file for each error, I'm simply breaking
from the original output format and returning a lint-like set of
errors. In this design, each file is opened, the checks are run, and
the file handle is reused for each check.
- Standardize failures so that the filename, line number, and message
can all be retrieved and formatted nicely for stdout.
- Compile regexes. The consensus seeeeeeeems to be that there's a
negligible difference in performance when compiling regexes but
there's a possibility that running them a lot of times may be faster,
and I could actually time it, but ugggggggh.