Return a non-const reference to clang::ASTUnit from MappedAST.
Add seec::seec_clang::search(), which takes a clang::ASTUnit, a filename,
a line, and a column, and attempts to find the "most specific" AST node at the
given position.
Start adding a Clang-based explanatory program visualization system.

The public interface for this system is in include/seec/ClangEPV, and the
system currently consists of one library: libSeeCClangEPV. Users can attempt
to generate an explanation for a clang::Decl or clang::Stmt using the free
functions seec::clang_epv::explain().

The textual explanations are stored as strings in an ICU resource bundle
called ClangEPV. (This system relies on SeeC's ICU helper library). Thus the
strings are localizable. Each Decl kind and Stmt class may provide arguments
to the format string, e.g. ReturnStmt has an input "has_return_value" which
is "true" if the ReturnStmt being described has a return value.

After the strings are formatted they are indexed (see IndexedString in
seec::icu), allowing them to associate certain ranges of the string with
arbitrary string keys. For example, in the message for IfStmt nodes, when the
body of the statement is mentioned, that area of the message is associated with
the key "then". One can use this information to link parts of the textual
message to other information (e.g. if the user were to mouseover this part of
the textual message, a program could highlight the body of the if statement).
To support this usage without needing to understand the textual key,
explanations can also contain links from textual keys to AST nodes. So, one
can find the textual key at a specific character in a message, and then find
the AST nodes that are associated with that key, without having to know
anything about the specific explanation that the message is for.

This system resides in the namespace seec::clang_epv, and includes the
following classes and functions:

NodeLinks is used to map string keys to AST nodes.

Explanation represents a generated explanation, including the indexed message
string and the links from string keys to AST nodes. This class is inherited by
ExplanationOfDecl and ExplanationOfStmt which implement the generation of
explanations for clang::Decl objects and clang::Stmt objects, respectively.

explain(::clang::Decl const *) attempts to generate an Explanation for the
given Decl.

explain(::clang::Stmt const *) attempts to generate an Explanation for the
given Stmt.