Fix reliance on old Id allocation.

We were relying on the fact that if the kinds of two identifiers were
different, then the names would be different. That's no longer the case.
Remove stray file.
Reinstate multiline input in interactive mode.
Remove file name from interactive mode messages.
Improve interactive mode help messages.
Rejigger help pretty-printing.
Tidy types in interactive mode.
Allow completion of interactive commands and factor repetition.
Nix closure names, so they don't gunk up autocomplete.
Make display of types more useful in interactive mode.

Removes origin hints from types and makes the display of universal
quantifiers consistent with the input syntax.
Add origin information only to type error messages.
Rephrase type error messages.
Use correct library search paths in interactive mode.
Correct interactive line numbers sans implicit Prelude.
Add library directory search path environment variable.

Paths in the 'KITTEN_LIB' environment variable are now searched when
substituting imports, as though '--library' were specified for each.
Paths must be separated by the system search path separator, e.g., ":"
on Linux or ";" on Windows.
Add 'for each'.
Simplify the layout rule.

Previously, this:

    foo : bar : baz
                quux
          blerg

Would desugar to this:

    foo { bar { baz
                quux
          blerg } }

Because `blerg` is indented more than the line containing the most
recent colon, following `bar`. The desugaring that the programmer
almost certainly intended is this:

    foo { bar { baz
                quux }
          blerg }

This caused problems with line-wrapped conditionals:

    if (this
        || that
        || anotherThing):
      take
      some
      actions

Here, `take some actions` would be interpreted as falling *outside* the
block, because they are indented less than the layout line, which begins
with `||` and not `if`.

The new, simplified layout rule is that all tokens in a layout block
must be indented at least as far as the first token in the block. That
leads naturally to a few legal styles:

    // Colons at the end of the line with consistent spacing.
    if (quux):
      foo
      if (bar):
        baz
        frob
      blerg

    // Colons before a block with consistent spacing.
    if (quux)
    : foo
      if (bar)
      : baz
        frob
      blerg

    // Colons before an aligned block with inconsistent spacing.
    if (quux): foo
               if (bar): baz
                         frob
               blerg
Extend lambda syntax.

Introduces `-> x… { … }` as sugar for `{ -> x…; … }`. The new layout
rule prohibits the common old pattern of:

    option (mx): -> x
      …

So this allows for the following simple substitute:

    option (mx) -> x:
      …
WIP Fix allocation of options and work on vector.
WIP These are the tests that have been unbroken.