An API for creating and starting named applications as gear units (fixes #185)

Ready for review.

I've implemented just the bare bones of the `start_container` and `stop_container` APIs which were easily testable using the `FakeGearClient`.

I haven't added any special error handling to these APIs, `GearClient` errors will be passed through to the called. Is that ok for now?

Calling `stop_container` for an non-existent or already stopped container will not result in an error. That's the same behaviour as `GearClient.remove` and it's the same behaviour as the `gear` commandline client (I think).

I've copied just enough of the `_model` module from https://github.com/ClusterHQ/flocker/compare/flocker-cli-deploy-19 to satisfy this ticket. `routes` and `internal_links` attributes can be added in later tickets.

I haven't bothered adding tests for equality of the `Application` and `DockerImage` classes yet because I haven't need to do any comparisons on those objects. But I can imagine that ``Deployment.discover_node_configuration`` will return `Application` instances at which point we can test comparison of those records (hopefully using a testing helper https://github.com/hynek/characteristic/issues/4)

Fixes #185 
So @tomprince 's point is that we should supply a `docker build` style `IMAGE:TAG` string.

But in my experiments gear doesn't seem to respect that. eg

```
$ docker images
REPOSITORY                   TAG                   IMAGE ID            CREATED             VIRTUAL SIZE
flocker/netcat               latest                757c87bf57eb        4 hours ago         2.435 MB
...
flocker/netcat               version-1             757c87bf57eb        4 hours ago         2.435 MB

$ curl -X PUT "http://localhost:43273/container/my-sample-service" -H "Content-Type: application/json" -d '{"Image": "flocker/netcat:version-1", "Started":true, "Ports":[{"Internal":8080}]}'

$ docker ps -n=2
CONTAINER ID        IMAGE                       COMMAND                CREATED             STATUS                     PORTS               NAMES
aea813ec1d2a        flocker/netcat:latest       /bin/true /bin/sh -e   9 minutes ago       Exited (0) 9 minutes ago                       my-sample-service-data   
13829d92757d        busybox:buildroot-2014.02   /bin/true /bin/sh      4 hours ago                                                        688622949880-data        
```

So instead of starting the image tagged "version-1" it actually started the image which I'd build earlier without specifying a tag (in which case the tag is automatically set to "latest").

It might be that the gear REST api has some other way of choosing a tag, a separate key in the JSON perhaps.

I'll look into it.