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)
Maybe combine the two lines to just `hash(self.schema, self.name, id(self.data))`?