Custom cache key function per model/collection

I added the option to configure a custom cache key function for each model/collection, that would override the default cache key function.