Use safer mutex

@djspinmonkey Does this look like the mutex fix we discussed? It passes the tests. Experimentation suggests that the ruby redis client returns `true` or `false` for `setnx` rather than the `1` or `0` that redis itself uses.