Use Redis::Mutex for locking

Fixes #71

This moves the locking to Redis::Mutex.

Also, previously, when gems were built on demand from bundler requests, locking was done based on a hash of all requested gems. I couldn't find any reason for that, so I changed it to lock per requested gem.

Another change is that when two parallel requests want the same gem to be built, it will be built only once.