Allow alternative coroutine implementations

This is required when using `redis-lua` within scheduled coroutines, for instance with `copas`. When using the standard coroutine implementation, yields from the network operations (receive, send) can be caught by the iterators of `redis-lua`, instead of the scheduler.

This patch works together with the construction of a client from a socket: `copas` wrapped sockets can be given to `redis-lua`.

Below are links to:
* [the problem](http://stackoverflow.com/questions/27123966/lua-nested-coroutines)
* [an alternative coroutine implementation](https://github.com/siffiejoe/nested-coroutines) (work in progress)