[debugger] Add a helper to walk the symbol index.

Adds an IndexWalker which can traverse the hierarchical symbol index and
match names in different scopes. This is significantly complicated by
template handling.

We want to do comparisons of template parameters using the
canonicalization defined by the debugger so as to be independent of the
exact spacing rules a compiler might emit. But we also don't want to
canonicalize every symbol when the index is created.

As a result, this code canonicalizes the index as necessary, but
attempts to do so as little as possible to get the needed matches.

This code is not currently hooked up to anything but the unit tests.
That will be done in a followup.

Add some related identifier tests and functionality that will be used in
the future.

TEST=unit

Change-Id: I4850bc1a39e452fa526792568670f1aed047bf55
15 files changed