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
Use of the attribute is because `_parse()` checks `_validated` to determine if the config instance's data has already been through validation, e.g.

```
if fig.is_valid_format():
    fig.applications()
```

in such a use, `_parse` checks `_validated` and knows it doesn't have to call `is_valid_format` again, but if you were to have a call like:

```
fig = FigConfiguration()
apps = fig.applications()
```

then `_parse` will call `is_valid_format` and bail our with a `ConfigurationError` if it then returns `false`