Added IValidator interface plus tests

Still need to clean up docstrings, and understand zope.interface
more to ensure I'm doing this right.