Add ETag, specify public cache

Based on research in regards to #85
ah. It wasn't that we were hashing a blank skin, but rather than we were hashing the image before standardizing it to NRGBA. We then cached the NRGBA version, so the hash of the image on the Skin struct was different than the hash stored alongside it.