Add etags conditional get

Also add feature tests for cache control.

@maxfliri
@robyoung