Fixed #12982 -- Added a ``get_or_set`` method to the BaseCache backend.

https://code.djangoproject.com/ticket/12982
Shouldn't django allow lazy-evaluation function as default value? (Calculate the default value as needed)