Implement node equality

When comparing jobs, nodesets are compared, which includes the list
of nodes.  However, equality on the node class itself was not implemented
meaning that any job which actually specified nodes would not evaluate
as equal to itself.  Correct that.

Change-Id: Iba04c7377783396105961b0a0ea55651aacc17b6
diff --git a/zuul/model.py b/zuul/model.py
index 00740cb..41e626f 100644
--- a/zuul/model.py
+++ b/zuul/model.py
@@ -404,6 +404,16 @@
     def __repr__(self):
         return '<Node %s %s:%s>' % (self.id, self.name, self.image)
 
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
+    def __eq__(self, other):
+        if not isinstance(other, Node):
+            return False
+        return (self.name == other.name and
+                self.image == other.image and
+                self.id == other.id)
+
     def toDict(self):
         d = {}
         d['state'] = self.state