Implement model_from_config and use it in DeployOptions

We've
 * added a new `Configuration` class, which
 * validates the supplied configuration dictionaries using two new private methods,
 * _applications_from_configuration, which does basic validation and returns a dictionary of `Applications`, and
 * _deployment_from_configuration, which does some basic validation and cross referencing with the applications dictionary, before returning a set of `Node` s which are then supplied to a
 * `Deployment` instance returned by
 * `model_from_configuration` method
 * which is assigned as a free function in the `config` module.
 * Finally we've updated the `DeployOptions` class to use that function to process the supplied yaml files.

We can raise further tickets for the extra validation steps that we'd planned.
Perhaps these tests could be more readable if they used `yaml.dump` of python dictionaries instead of Yaml in strings.