Fig compatibility layer 649

TODO deal with port edge cases, e.g. just container port specified, or IP and port specified on host
See http://www.fig.sh/yml.html
Issues have been raised for this missing functionality, which is not yet supported by Flocker.

Fixes #649
In `Configuration.applications_from_configuration`, the code used is

```
        fig = FigConfiguration(application_configuration)
        if fig.is_valid_format():
            return fig.applications()
        else:
            return self._applications_from_flocker_configuration(
                application_configuration)
```

Both `is_valid_format` and `applications` are public, so in principle, `applications` could be called without a check of `is_valid_format` first. If that happens for any reason, `self._validated` allows the `_parse` method called by `applications` to check whether or not the config has already been validated and so only validate the format if it hasn't already been done. This approach means either way, `is_valid_format` is only ever called once.

I did it this way because `is_valid_format` is a method to "check if the supplied config is a fig format and return true or false on that", whereas `applications` is "attempt to parse this config on the basis that it is valid fig format and bail with a `ConfigurationError` if any validation fails"