Support indexing in ProcessState and ThreadState annotations.

This uses seec::icu::IndexedString internally, so the syntax of indexing a
string is exactly the same as for ClangEPV. The difference is that we don't
support relative node names, because these strings refer to an entire state and
not a specific AST node, so we have an absolute node referencing scheme:
  decl:ASTIndex,DeclIndex
  stmt:ASTIndex,StmtIndex

For example we might use the index "@[stmt:0,16]this call@[]".

The class IndexedAnnotationText is used to handle the initial indexing and
searching for the primary index at a given character position. The search result
is an AnnotationIndex object, which handles the lookup of Decl and Stmt nodes
from the syntax above.
Separate "decl" and "stmt" nodes for annotations.

The mapping information uses a separate set of indexes for Decls and
Stmts, so we need to identify which we are indexing to get a correct
lookup.
Separate annotation and explanation for Decl tooltips.
Allow annotations to suppress node explanations.

Including a "suppressEPV" node in an annotation node now indicates that
explanations generated by the ClangEPV system should be suppressed (i.e.
they won't show up in the Decl/Stmt tooltip as they usually would).
Support node annotations in the explanation view.