feat(CacheModel): add a CacheModel mixin

My attempt at a cache model mixin based on the discussions in #27.
Thoughts?

I haven't quite figured out a good way to get the last test to pass ```should remove destroyed record from collections```, without looking through all the items in the cache and everything cached for each of those items.