The cache key should use the value of the object

Fix so that when serializing with Marshal the value of the object is
used instead of the object. Otherwise the cache_key will always be
unique.
Just a little bit cleaner with the update method. It's equivalent to concatenating a string and using hexdigest on that string.