My previous change that reworked how metadata generation worked was not
correct for two reasons:
* It passed the original `io.Reader` (with no bytes remaining) to
`GenerateMetadata`
* It did not seek back to the beginning of the temporary file after
writing to it, causing any subsequent reads to return EOF.
This change fixes both issues and S3 uploads now work fine. We really
ought to investigate adding test coverage to our S3 backend to avoid
similar recurrences.