Update hashCode to hash the entire message

This is inspired by the way the hash code is generated for protocol
buffers in Java, see:

https://code.google.com/p/protobuf/source/browse/trunk/java/src/main/java/com/google/protobuf/AbstractMessage.java#188

For lists the Jenkins hash function is used.

Tests are in https://chromiumcodereview.appspot.com/63173006.

R=sigmund@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//64753003