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/memleak.py b/tools/memleak.py
index e5034cf..80a1dc3 100755
--- a/tools/memleak.py
+++ b/tools/memleak.py
@@ -240,7 +240,7 @@
                         combined = []
                         for addr in stack:
                                 combined.append(bpf_program.sym(addr, pid,
-                                        show_module=True, show_address=True))
+                                        show_module=True, show_offset=True))
                         alloc_info[info.stack_id] = Allocation(combined,
                                                                info.size)
                 if args.show_allocs: