Add relation variables

* This branch will add a relation variable that will wrap a
  relation and propagate writes then update its reference to use the
  new relation.
Add Relation::Variable
Add Relation::Variable::Materialized