Encapsulated how Grace works within the main cache. Callers no longer need worry
about goroutines and cloning requests.

This has a couple side-effects. Namely, the code to check if grace is already
activated has been moved into the calling goroutine. The result is that requests
which hit Grace are going to be slightly delayed. On the flip side, under
heavy load, fewer allocations (and goroutines) will occur. This seems like a
good compromise given that Grace is specifically meant to help deal with heavy
loads.
missing files...