client: default: allow setting negative timeouts

Django tests now expect negative timeouts to be accepted
and act as removal of cache.
See django/contrib/sessions/tests.py — SessionTestsMixin.test_actual_expiry
It seems logical to allow negative timeouts since redis supports them.

To avoid using the overhead of set+expire in a pipeline we just delete the key.
tests: update test_setnx_timeout to actually test value being persistent in cache