Fix repr when Table is backed by mutable data

The data backing a table was being hashed while computing head. This resulted in TypeErrors when viewing Tables backed by DataFrames. 

Fixing this required changes in three places:

1. The hash of a Table is now the hash of the schema, the name and the id of the backing data.
    * This change could lead to unexpected behavior when there are multiple tables backed by equal but not identical data.
2. Traversing a TableExpr now doesn't touch the data backing any of the tables
3. Added into(DataFrame, DataFrame)
Just `@dispatch(DataFrame, DataFrame)`

We use tuples in the case where both types are ok.  This is the same syntax as used by `isinstance`

```Python
def isnumber(x):
    return isinstance(x, (int, float))
```