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.