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.

* [x] Refactor Relation::Empty
* [x] Add Relation::Variable
* [x] Update axiom-optimizer to work with Relation::Variable 
* [x] Ready for review