Add support for manual expiration for after direct DB manipulation
cc @Larochelle & @Hectorhammett
I've started an alternative to https://github.com/Shopify/identity_cache/pull/495 (and the existing expire_primary_key_cache_index class method) since I think we need a way to expire caches that doesn't make assumptions about what caches need to be expired. Otherwise, it is easy to miss caches that the developer using this manual expiration didn't think about (e.g. from embedded associations) or ones added in the future.
This PR adds cache_indexed_columns class method that can be used to get the columns that are needed for cache expiration (see its documentation for details). After that data is queried and put into the form of a hash, it can then be used with expire_cache_for_delete or expire_cache_for_update class methods. I've also added expire_cache_for_insert, which could just be used with the data to insert.
Note that I haven't yet tested or fully documented this code (e.g. we could use a brief mention of this in the REAMDE and link to a new docs/manual_expire.md file with details).