Remove deprecated require statement
Change Relation constructor to not require the body

* By default this is how an empty materialized relation is created
Refactor Relation::Empty to be simpler

* Remove second argument from constructor. There is no known reason
  the empty relation should wrap another relation.
Change Relation constructor to not return Relation::Empty

* The Empty subclass should only be reserved for "impossible"
  relations, or relations that cannot ever possibly contain a
  result. The optimizer is mainly responsible for identifying these
  cases (like: relation - relation), and we should mainly be working
  with materialized relations in our own code.
Update flay and reek thresholds
Update rspec to run the specs with warnings turned on
Merge branch 'master' into axiom-types-refactor

Conflicts:
	config/flay.yml
Fix failing specs