improves encapsulation for grain.cache

There is no longer a singleton version of grain.cache - you must new up
an instance of it to take advantage of it's features.  This is to ensure
that no bleed exists between cache repositories.