Workers handle errors better, code is cleaner

Concordance can now track when its worker fails. Scorer cannot, but doing it right
(both of them) may involve a sort of ticketing system for each job associated with
a concordance or a run.

This commit also fixes many issues and improves (& corrects) the validation module
and associated code.

Related to #15, but to handle #15 well requires tracking jobs better. Not sure it's 
worth the energy expenditure right now to do that. 
It's definitely questionably complex for a dictionary comprehension… 

I'm creating a dictionary of all the key vals in the given dictionary, eliding keyvals when the value's length is 0. If a value is a list of length one, I pop it out of the list. 

This is used because of the way Flask handles formed; they get submitted with all sorts of cruft (necessary because of the untyped gross nature of HTML forms).