breaking up association cache methods

I was trying to figure out how to fix the Marshal load problem that occasionally happens when loading an object from the cache. [Shopify seems to have figured it out](https://github.com/Shopify/identity_cache/pull/55/files) but it's really hard to reproduce it in a testing environment.  I ended up refactoring the association cache a bit so I thought I'd push it upstream.