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`).

* Interpreting a builtin now keeps track of location
  information.

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

* More information in error in `interpretFunction`.

* Sorted definitions in lib/Kitten/Type.hs.

* Forgot.

TODO:

* REPL stack stuff.  (Type checking and something else I
  forgot).

* Clean up type variable generation to remove the need for
  the hacks I have.  Maybe.

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

* Move some auxiliary fixes and improvements into another
  patch:

  * Builtin location information.

  * `interpretFunction` error stuff.

  * `openFilePushHandle`.

  * Tighter type signature in src/Repl.hs.

  * Definition sorting.

* Remove more redundant constructors.

* Sort definitions in lib/Kitten/Interpret/Monad.hs.

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

* Remove FIXMEs in AST instances.  (Why did I add them?)

* Proper ToText instance for Typed and Typed.Value.

* Verify yarn output hasn't changed.