WATCH + MGET (or any bulk command) prevents connection from clearing transaction state

The problem:

  > conn  = yield conn.watch(key)
  > reply = yield conn.mget([1, 2])
  > conn  = yield conn.multi()
  > yield conn.exec()

This will result in `conn.transactions' negative. The code that clears
the inTransaction flag relies that this number is either 0 (zero) or
positive. Thus, after this, the connection has been lost forever, as
the inTransaction will never clear up.

The fix relies on the fact that once `MULTI' command has been issued
all commands reply afterwards are `QUEUED'.

  > if self.transactions > 0:
  >     self.transactions -= len(reply)

The only bulk response we get after and `MULTI' command is when one
issue `EXEC'.