[ refactor ] Moving things around

* Introducing Contexts of the shape (Maybe^n Void), the class
  ValidContext generates the runtime witness we require to e.g.
  produce a diagonal evaluation context.
  `norm` is now of type:  ValidContext a => Check a -> Check a
  rather than: Check Void -> Check Void.