add initial .locked(key, fn)

cc @calvinfo 

how does that look ?
kinda hard to test, if you have any suggestions on more tests let me know.
maybe we should add a test that uses redis list and we can check that the events are in sorted order.