shell: Add a DockerClient.connect() method which returns deferred

This allows connecting and reconnecting the DockerClient properly,
as well as tracking failures and successful conneciton.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
shell: Don't abuse "failure" event on the Docker page

Closes #984
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>