Add `equals` and `hashCode` to Tuples

Right now, one can't use `Tuples` in HashMaps, for example, lookup will always fail. This patch allows to do that. Also, comparing tuples without looking at their internals.