watcher: re-register watches when a connection is suspended.

While zookeeper documentation says that watchers are kept when
transitioning from suspended to connected, this seems to not be the
case. The `DataWatcher` pattern shipped with Kazoo explicitely
re-register watchers when the connection is suspended even if we don't
transition to LOST state:
 https://github.com/python-zk/kazoo/issues/29

We do the same.

The unit test therefore needs to do several additional iterations to
work properly.
Remove "suspended state" from the FSM.

Since suspended should be considered as lost, we are just better
considering that this is the same transition. This simplifies a lot
the FSM.

To properly test for edge case, we raise an error during unittests if
a transition is unknown. This forces us to handle some odd transitions
triggered by events repeating several times. For example, the
connection lost event can be triggered several times because we
received it too late and issued an operation.
Merge pull request #23 from vincentbernat/fix/suspended-state

watcher: re-register watches when a connection is suspended.
version: store version in one place

Use this version in `setup.py` and for `--version`.
watcher: handle non-existent configuration file

When a non-existent file is requested, the `Conf` object can return
`None` instead of an empty object. We handle this case and consider we
get an empty object instead.
Merge pull request #24 from vincentbernat/fix/version

version: store version in one place
join: make join work on files and not just directories

`watchdog.observer.Observer` is not able to watch a file. It needs to
watch a whole directory. We make it watch the parent directory and
check we only get notified for real changes for our file/directory.
Merge pull request #25 from vincentbernat/fix/inexistent-file

watcher: handle non-existent configuration file
Merge pull request #26 from vincentbernat/fix/joiner-with-files

join: make join work on files and not just directories