cc: Resolve symbols from external debuginfo

Adds support for resolving symbols using external debuginfo files,
which can be retrieved from two locations. First, check the build-id
of the desired binary and look in /usr/lib/debug/.build-id according
to the build-id structure. Second, check the debuglink section of
the desired binary and look in /usr/lib/debug or in the binary's
current directory. These are the rules applied by GDB as well, but
GDB lets the user reconfigure the debug directory path from
/usr/lib/debug to something else; we do not support this.

These changes are based on the following description of how GDB
resolves external debuginfo:

https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html
diff --git a/tools/stacksnoop.py b/tools/stacksnoop.py
index 52be79b..3cd7062 100755
--- a/tools/stacksnoop.py
+++ b/tools/stacksnoop.py
@@ -120,7 +120,7 @@
         print("%-18.9f %s" % (ts, function))
 
     for addr in stack_traces.walk(event.stack_id):
-        sym = b.ksym(addr, show_address=offset)
+        sym = b.ksym(addr, show_offset=offset)
         print("\t%s" % sym)
 
     print()