New validator

This still needs some comments and tests but the basic structure is there. Tear it up.
We could add a debug_level flag. Currently, there exists error, warning, and info (the - vs _ messages are info).