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 
I can't think of a case (in terms of software behaviour rather than hard resource limits on a device) in which `test_discover_one` would pass but `test_discover_multiple` would fail, or the reverse of that, so this looks redundant to me too.