Fix our caching logic to be more strict.

Our caching logic took the Last Modified time over ETags, but this meant
that if ETags differed but Last Modified was the same, the cached
version would be considered good. We now take both into account when
checking cache validity.
Massively speed up datagrid rendering.

While investigating a slowdown with the new RBCommons deployment, I
realized we were creating a RequestContext over and over again. Once for
every rendered cell. It was excessive.

I've changed it to only create one RequestContext per request, total,
and to reuse those values for any new contexts used when rendering a
cell.

Prior to this, our weirdly slow RBCommons datagrid rendering on the new
instance was hovering around 6 seconds. After, it was at just around 1
second without any cached queries, and 0.5 seconds after.

While we still need to track down what's going on on that instance, I
can say that our datagrid rendering has never been faster.