We should do the right thing here, and then follow through elsewhere in a separate ticket.

The difference between using `==` and `__eq__` is when comparing unsupported objects. e.g. `cell != coord`.

Implementing `__ne__` using `==` (which returns `False`) will result in an answer of `True`:
```
>>> cell == coord
False
>>> cell != coord
True
```
Implementing `__ne__` using `__eq__` (which returns `NotImplemented`) will result in an answer of `False`:
```
>>> cell == coord
False
>>> cell != coord
False
```

I'm not sure which makes more sense, but I have a very vague feeling that the latter is more Pythonic... thoughts?