WIP Use typed AST where possible

The interpreter and yarn components now use the typed AST.

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.

TODO:

* Look carefully at TODOs and FIXMEs introduced in this
  patch.

* Fix empty compose problem in src/Main.hs.

* Proper ToText instance for Typed and Typed.Value.

* Verify yarn output hasn't changed.
Make definitions always point to functions