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
The ideal in API design is that there's only one way to do things, and then you don't have to add extra logic checks, which just mean more code paths you have to test and more state left lying around as a potential source of errors.

Since this is internal code you can assume some of level of comptence by callers. So you can just document that `application()` should only be called if the format is known to be fig and leave it at that.

(If this was a library exposed to users I might say you should return to your original design of always trying to parse as fig and raising exception if that fails. Or maybe I was wrong in general telling you not to do that and you should return to that.)