Implemented __hash__ function for key objects.

Overriding __eq__ blocks inheritance of __hash__ in Python 3.

Fixes issue #55
diff --git a/rsa/key.py b/rsa/key.py
index a5afced..73494b9 100644
--- a/rsa/key.py
+++ b/rsa/key.py
@@ -228,6 +228,9 @@
     def __ne__(self, other):
         return not (self == other)
 
+    def __hash__(self):
+        return hash((self.n, self.e))
+
     @classmethod
     def _load_pkcs1_der(cls, keyfile):
         """Loads a key in PKCS#1 DER format.
@@ -430,6 +433,9 @@
     def __ne__(self, other):
         return not (self == other)
 
+    def __hash__(self):
+        return hash((self.n, self.e, self.d, self.p, self.q, self.exp1, self.exp2, self.coef))
+
     def blinded_decrypt(self, encrypted):
         """Decrypts the message using blinding to prevent side-channel attacks.
 
diff --git a/tests/test_key.py b/tests/test_key.py
index 833a6aa..afefa3a 100644
--- a/tests/test_key.py
+++ b/tests/test_key.py
@@ -59,3 +59,14 @@
                                         exponent=exponent)
         self.assertEqual(39317, p)
         self.assertEqual(33107, q)
+
+
+class HashTest(unittest.TestCase):
+    """Test hashing of keys"""
+
+    def test_hash_possible(self):
+        priv, pub = rsa.key.newkeys(16)
+
+        # This raises a TypeError when hashing isn't possible.
+        hash(priv)
+        hash(pub)