extract Cache::AbstractStore into its own file

This is a subtle **style** change, but IMO having parent classes like this in separate files is a cleaner approach, especially if they are designed to be inherited from.