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 
This treats both active and inactive units the same, which is probably wrong. E.g. if this node is supposed to be running application X and X has a unit but is stopped, probably we want to start X. The full set of edge cases is probably out of scope for this release, but we can probably get pretty far pretty easily with "running" vs "not running".