Add basic cache_key property on Resource objects

Allow resource objects to be aware of their own basic lookup cache key, based on their properties.

This method shows that the current cache backend still needs rework, as having to pass the model around leads to some really hairy code paths. However, this will suffice until that structure can be cleaned up.