Fail less badly on unknown variables (see #7).

Is this sufficient to remove the todo?
Or what is an appropriate way for reporting errors?
Raise more specific error when Trie lookup fails.
Distinguish TeX True and TeX False by constructor.

This commit is about the representation of TeX snippets. There are two
kinds of TeX snippets:

1. Snippets resulting from {-" ... "-} comments in the code. These
snippets used to be represented as (TeX True "...") and are now
represented as (TeX "...").

2. Snippets resulting from "..." parts in %format directives. These
snippets used to be represented by (TeX False "...") and are now
represented as (Replacement "...").

This commit prepares for extending the representation of TeX to account
for languages with a different comment syntax. The representation of
Replacement is independent of the comment syntax, so it makes sense to
separate the two forms of snippets more.
Store comment delimiters with comments.

This commit prepares for adding support for languages with other comment syntax.
Support identifiers that start with '.

This is useful for Template Haskell, and for adding support for ML.
Lambda-lift classify.
Prepare for adding more languages.
Support Scala lexer.

This commit adds a "--scala" flag and support for lexing Scala. But the
spacing heuristics and the %format directive are still based on Haskell.
Support Standard ML.

This commit adds a "--sml" flag and support for lexing ML, but the
spacing heuristics and the %format directive are still based on Haskell.
Support GHC's "family" keyword.
Lambda-lift trimSpace.
Support #lang directive for switching language.

This is useful for multi-language documents (for example, for papers
comparing how to solve a problem in different languages).

Should language switching interact with %format and %subst directives in
a clever way?