Merge of new validator with tests

Per @gvwilson request (issue #34).
In practical terms, seems like the main difference is readability for debugging, as the clunky *LESSON_TEMPLATES[template_name][0]* is given a clear name. 

In this case, the first element of the tuple is actually an object, not a regex... so the above as written would actually crash. Maybe readability has its uses? ;)