Shallow copy, deep equality, and hashCode to Tuple classes

Adds functionality to Tuple classes
- Implementation of equals() and hashCode() 
- Copy constructor for creating shallow copies of tuples