Updates to the Cryptol specializer:
Updates to the Cryptol specializer:

- Introduce monad type SpecT m a = StateT SpecCache (ModuleT m) a
  (easier to call from code written in ModuleT monad)

- Fix bug where specializing expressions under ETAbs could cause
  type variables to `escape` from their scopes.

- Function `withDeclGroups` lets you run arbitrary specializer monad
  action within the context of a set of DeclGroups. This is used to
  implement specialization of where-expressions, and also for the new
  function `specializeDeclGroups`, which specializes a set of DeclGroups
  using the monomorphic bindings as the 'root set' to determine what
  other specialized bindings to include.

ntc2/cryptol,GaloisInc/cryptol,GaloisInc/cryptol,GaloisInc/cryptol