title: ConfigObj option validation
body: <p>I am using ConfigObj and Validator to parse a configuration file in python. While I like this tool a lot, I am having trouble with validation using a configSpec file. I am using the option() configSpec type that forces the value to be chosen from a controlled vocabulary:</p>
  
  <pre><code>output_mode = option("Verbose", "Terse", "Silent")
  </code></pre>
  
  <p>I want my code to know when the user enters an option that's not in the CV. From what I have fond, Validator only seems to say which config key failed validation, but not why it failed:</p>
  
  <pre><code>from configobj import ConfigObj, flatten_errors
  from validate import Validator
  
  config = ConfigObj('config.ini', configspec='configspec.ini')
  validator = Validator()
  results = config.validate(validator)
  
  if results != True:
      for (section_list, key, _) in flatten_errors(config, results):
          if key is not None:
              print 'The "%s" key in the section "%s" failed validation' % (key, ', '.join(section_list))
          else:
              print 'The following section was missing:%s ' % ', '.join(section_list)
  </code></pre>
  
  <p>That code snippet works but there are any number of reasons why a key might have failed validation, from not being in an integer range to not being in the CV. I don't want to have to interrogate the key name and raise a different kind of exception depending on the failure cases for that key. Is there a cleaner way to handle specific types of validation errors?</p>
  
  <p>Long time stackoverflow reader, first time poster :-)</p>