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 in the expression. 
3. There is now an into function for DataFrame -> DataFrame