Fix keyfile bug with read() updating `location` incorrectly

I'm not sure how to test this change yet, but this patch works in practice for my use cases. When this bug is fixed, one can stream gzip from S3 keys like so,

gzip_fd = gzip.GzipFile(fileobj=boto.s3.keyfile.KeyFile(key))

which is really handy (where `key` is a boto.s3.key.Key).