Extend docker watcher for new api

Added a bunch of tests for the base service watcher and docker watcher, so that I understood what the code was doing.

Fixed exception handling bug discovered whilst writing tests.

Fix the docker watcher to work with newer versions of the docker API (as well as keeping compatibility to the old version) - now works against docker version 0.7.5 which I'm using currently.