Fixed key and argument passing to eval() and evalsha()

This is an API breaking change, but unfortunately, I don't see a clean
way of getting around this. The problem is that the current API to
eval() and evalsha() both take a dict containing both the keys and
arguments, but this has 1 fundamental flaw: Retrieving the items
from a dict is not guaranteed to result in the items being returned
in insertion order, but rather random. This is just a fact with
most types of hashes unless you explicitly use an ordered dict.

The only clean way I can see of supporting keys and arguments as
expected by the script is to have two parameters: keys and args.
Fixed check in sort routine when specifying limits.

The check for start/end was incorrect. Also, added new unit test
test_sort.py
Merge pull request #38 from tpena/feature/eval-scripting-keys-values

Replaced key and argument passing to eval() and evalsha() - use two separate parameters for keys and values instead of dict
Merge pull request #39 from tpena/feature/sort

Fixed check in sort routine when specifying limits.
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, afterwards, the connection has been losted, as the
`inTransaction' will never clear up.

This fix relies on the fact that once `MULTI' command has been issued,
all replies are effectively `QUEUED' until redis receives an `EXEC'
command.

  > if self.transactions > 0:
  >     self.transactions -= len(reply)
Merge pull request #40 from dgvncsz0f/master

WATCH + MGET (or any bulk command) prevents connection from clearing transaction state
BUGFIX: WATCH + MGET clearing inTransaction prematurely. WATCH + HGETALL does not use post_proc

To reproduce the 1st problem:

  > t = yield conn.watch(k)
  > t.mget([k])
  > assert t.inTransaction # boOoOm!

To reproduce the second problem:

  > t = yield conn.watch(k)
  > h = yield t.hgetall(k)
  > assert type(h) == dict # boOoOm!

This commit introduces a `commit_cc' function (similar to
`unwatch_cc') which clears the `inTransaction' flag only if there has
been a `MULTI' command before (fixes the 1st problem).

The second problem is fixed by not delaying using `post_proc'
function if only `watch' has been issued.
Merge pull request #41 from dgvncsz0f/master

BUGFIX: WATCH + MGET clearing inTransaction prematurely. WATCH + HGETALL does not use post_proc
Fix lack of timeout parameter.
Merge pull request #44 from fatlotus/master

Add timeout parameter to BRPOPLPUSH