Proper idempotent semantics

- Write operations now manipulate two Redis ZSETs per user key
- One ZSET records the latest Insert op + timestamp for a user key+member
- One ZSET records the latest Delete op + timestamp for a user key+member
- Inserts and Deletes only succeed if they're newer than existing data
- Transactional semantics implemented via Lua scripts
- Also, add max sizes for ZSETs
- Also, use float64s for scores

See README.md for explanation