Get identifying all the mallocs working.

Tons of stuff in here.

* Don't explicitly filter out symbols not used in the main
  executable.
* Grab symbols from a special list, shared object or not.  This
  lets us pull out malloc and friends, even if the executable
  doesn't use those directly.
* Add a C++ test program that uses new, thereby testing a shared
  library calling malloc, but not us.
* get rid of all the awful synchronization and just break at main.
  This lets us do bfd.SymbolsProcess then, which means the dynamic
  loader has already done its thing.
* handle programs that don't have 'malloc' without panic'ing.

My test programs work, as well as a custom compiler I have
installed.  But we seem to fail on fortran programs and
simulations, e.g. enzo.