More human configuration errors

Breaks up `ConfigurationException` in to:

  * `ConfigurationParsingException` - for errors parsing the YAML/JSON or binding it to the Configuration objects.
  * `ConfigurationValidationException` - for errors validating the configuration against its constraints (existing `ConfigurationException`)

`ConfigurationParsingException` generalizes the description of parse errors. The following error are now handled and better described:

  * _Malformed YAML_ - If it can't get parsed in to a JsonNode tree, it's malformed.
  * _Unrecognized field_ - Naming a field that doesn't exist on the target class. Provides suggestions, ranked by Levenshtein distance to optimize for typos.
  * _Incorrect type_ - If Jackson can't marshall the types (e.g. using a String when expecting an Integer).

When possible, it will include the most precise location information it has available.

Example:
```
/etc/worldgreeter/conf.yaml has an error:
    * Incorrect type of value at: server.applicationConnectors[0].port; is of type String, expected: Integer
``` 

`ConfiguredCommand`s now suppress stack-traces for `ConfigurationException`s, as they represent an error in the runtime configuration, which the stack-trace doesn't help with.

Caveats:

  * `commons-lang` is a dependency, for the Levenshtein distance implementation.
  * Jackson uses `JsonMappingException` to classify many different problems, making it difficult to handle more specific problems.