A minimal implementation of f.n.d.Deployement.discover_node_configuration

Here's a very basic implementation of f.n.d.Deployement.discover_node_configuration which returns a list of ``Application``\ s which only have a name.

Other Application attributes (image, volume, internal_links, external_links) will be implemented separately when we have reliable way to retrieve those from the system.

I've:
 * Added `links`, `ports` and `container_image` to the `Unit` record type, so that it can be used...
 * In `FakeGearClient.add` which now stores its internal state as a dictionary of `Unit` instances.
 * although `FakeGearClient.list` still only returns partially populated `Unit`\ s because the real `GearClient` doesn't yet have a way to populate those other attributes
 * So the `ports`, `links` and `container_image` attributes of `Unit` have default values for the time being.
 * I've also added the `Application` record type which for now also has an optional `image` attribute, since the real GearClient can't yet supply enough information.
 * `Deployement.discover_node_configuration` returns a list of these `Application`\ s initialised with a name only.

Fixes #205 
In general I feel that having tests for 0 and many is sufficient, since those are the edge cases. This test would therefore be redundant. https://en.wikipedia.org/wiki/Zero_One_Infinity doesn't actually convey what I'm going for, but it's close.