Use fetch to make exception more informative

If the key doesn't exist, then we'll try to call [] on nil. By using
fetch, it's obvious what key doesn't exist.
Allow setting session with an expiry

setnx only sets the value if the key does not exist. That prevents us
from changing a user's session.
Prep for v0.6.4 release
Remove useless private declaration

Thanks @jjeb #36
Another attempt to set the key when looking for collisions.
Renaming sid_collision? to claim_sid_unless_collision since it is setting the key now.