Add support for ETag logic on GETs

This adds support for ETag logic, on GET requests only. It doesn't change behaviour for any non-GET Etag requests.