[ refactor ] Splitting up into modules + newtypes

* Splitting up the big file into submodules so that everything
  is more readable

* Introducing newtypes [Renaming] and [Context] in order to make
  the intent clearer and isolate the related notions in their own
  module (empty context, renaming dropping the first variable, etc.)

* Secure [normClosed] working only on closed terms

The curious reader should start with HSubst followed by Typechecking.