Generate the cache key based on a hash of the widget instance and args.

Widgets generated dynamically may not have a unique id, which leads to
cache collisions. Instead, the cache key can be based on a hash of the
widget instance data and args.

This requires removing the functionality for flushing an individual
widget instance from the cache on save since the instance and sidebar
args aren't known at that point.