Use NameGen for name generation in type inferer

This prevents type variables from being duplicated in
subsequent executions of the type inference engine.

(At the moment, every line given to the REPL will reinfer
the prelude.  In another patch, that will not be the case,
and the prelude will be typechecked once.)
Annotate the AST with the result of type inference.
Use typed AST where possible

The interpreter and yarn components now use the typed AST.

(This change possibly breaks yarn; yarn output has not
been tested.)

Auxiliary changes:

* String literals now have their own AST constructor
  (replacing Vector).  Strings are still typechecked as
  `[Char]`.

* `Scheme` is now a functor, allowing it to contain a `Type`
  or a `Typed`.  Uses of `Scheme` have been replaced with
  `TypeScheme` (an alias of `Scheme (Type Scalar)`).

* The `Def` of a typed AST now includes the type `Scheme`.

* The `Def` of a typed AST now refers to a `Scheme Typed`
  instead of a `Value` (or `Scheme Value`).

* The interpreter now has a separate type for runtime
  values, `InterpreterValue`.

* Many unused constructors of `Term` and `Resolved` (such as
  `Choice` and `Wrapped`) have been removed.

* Type inference now takes a typed prelude.  This means the
  prelude is not inferred for every line of REPL input.

* Type inference now uses a list of types as the fragment
  stack instead of a list of values.

* `yarnValueInstruction` and `yarnValue` are now merged and
  total.