Start Checker.
Rename to Spire monad.
Add Monad constraint to SubstM typeclass.
Move over to unbound library.
Eliminate many 'unused binding' warnings.

But not all: there are unused top-level defs in the pretty printer
module and it's not obvious we actually want to delete those (figure
this out next time we work on the pretty printer).
Fix substitution bug.

There may be a fancier way to implement this, where the library still
makes the recursive substitution calls, but this approach seems both
flexible and light weight: in the cases where variables are
encountered, or where post processing is needed, the user defines
'substHookM' to return a hook function that takes over the
substitution at that point.  In our code, the "variable" case and the
"post processing" case are combined for 'VNeut'.

Here's the instance:

  instance SubstM SpireM Value Value where
    substHookM (VNeut nm fs) = Just f
      where
      f nm' e = do
        fs' <- substM nm' e fs
        let head = if nm == nm' then e else vVar nm
        elims head fs'
    substHookM _ = Nothing

One possible downside is that the parallel substitution 'substsM'
seems hard to define now. But we weren't using that anyway.
Remove commented out code in Spire.Unbound.SubstM.

Doing this in a separate commit in case someone wants to
revert and add a 'substsM' implementation for some reason.
Add 'substsM' and prepare 'Spire.Unbound.SubstM' to be cabalized.
Rename the 'SubstM' module.
Remove unnecessary LANGUAGE pragmas.
Make a Cabal package.