Multiple queued commands during watch

When MULTI has not been called on a transaction yet, post_proc should be treated as it would be without a transaction.

Example when post_proc isn't called, so the result of hgetall is not a dictionary:

    t = yield db.watch(['foo'])
    a, b = yield defer.gatherResults([
        t.hgetall('bar'),
        t.hgetall('baz'),
    ])

This pull requests adds a test for this scenario, fixes the handling of post_proc before MULTI is called, and makes commit/discard check if MULTI is called.