Added value parameter

Added a 'value' parameter -  used only if invalidate == True and update == True
It will set the cached value to `value`

Why?
Invalidate is expensive - a new database access must be done to get the new cache value.
If we already have the object instance, we just set it in the "value" parameter, saving a database hit.