#9595 Cache timeout changes

Adds the ability to set a non expiring timeouts and makes sure the memcache backend matches the other backends in terms of handling 0 as a timeout (set and expire)

Relevant ticket: https://code.djangoproject.com/ticket/9595