[debugger] Improve function formatting.

Makes function naming a little bit more predictable. The normal name of
the function no longer includes the parameters. Previously we always
appended "()" regardless of whether there were parameters or not, which
was misleading.

If we need "full function name with parameter types" we can add a new
helper function to the Function class in the future.

Changes the default function name printing to show an elided parameter
list in the default case (previously it picked up "()" from the function
name as described above). It only shows "()" if there are really no
arguments. Flags are added to "frame" and "backtrace" that expand these
lists for cases where functions are overloaded and the parameters are
important.

Adds syntax highlighting for function names in locations, notable stack
traces. This makes the final function name bold and all template
parameters dim. This helps a lot reading the output from complicated
template functions.

Adds some unit testing ability to the OutputBuffer so we can test code
that does formatting. This is used by the new function formatting tests.

TEST=unit, manual

Change-Id: Ib09512ee5a00f30c4c49c1ccdff89ef4c5bceda8
17 files changed