Instead of a linear search through the symbol table on every lookup, on the first lookup drsyms now builds a hashtable of all symbol variants and uses it on subsequent lookups.
Adds a new option to the drcontainers hashtable to supply a key freeing callback, needed here because we are duplicating most strings ourselves before adding and do not want to have drcontainers re-duplicate.
Adds a -verbose 1 notification for libraries taking long amounts of time to be processed, for easier diagnostics in the future.
Performance-tested on large applications where it reduces drcachesim -record_heap query times by 5x for less-optimized code and 2x for highly-optimized code.
Fixes #4187 (closed)