py: Make long ints hashable.

Addresses issue #765.
diff --git a/py/mpz.c b/py/mpz.c
index 3b96c57..24c83d9 100644
--- a/py/mpz.c
+++ b/py/mpz.c
@@ -1213,6 +1213,22 @@
 }
 #endif
 
+// must return actual int value if it fits in mp_int_t
+mp_int_t mpz_hash(const mpz_t *z) {
+    mp_int_t val = 0;
+    mpz_dig_t *d = z->dig + z->len;
+
+    while (--d >= z->dig) {
+        val = (val << DIG_SIZE) | *d;
+    }
+
+    if (z->neg != 0) {
+        val = -val;
+    }
+
+    return val;
+}
+
 // TODO check that this correctly handles overflow in all cases
 mp_int_t mpz_as_int(const mpz_t *i) {
     mp_int_t val = 0;