Fix __hash__ problem.

```__hash__``` must return an integer. The ```hashlib``` functions don't return anything that's simply converted to an integer, so I moved the MD5 hashing into the ```etag``` function and changed ```__hash__``` back to using the built-in ```hash``` function. I don't know if the difference between the hash and the ETag will be a problem. This is a quick fix for a serious problem that I caused.