Prior to this commit, the `ResourceHttpRequestHandler` would support HTTP caching when serving resources, but only driving it through the `Resource#lastModified()` information. This commit introduces an ETag generator function that can be configured on the `ResourceHttpRequestHandler` to dynamically generate an ETag value for the Resource that is going to be served. Closes gh-29031