Use _r_debug instead of /proc/<pid>/maps for folly::symbolizer
Use _r_debug instead of /proc/<pid>/maps for folly::symbolizer

Summary:
Using _r_debug offers a number of benefits:
- It allows us to symbolize addresses in data segments like .bss that
  are marked "[heap]" in /proc/<pid>/maps.
- It requires a lot less code.

It also fixes a preexisting bug where we would fail to symbolize
addresses that fell in any section past the first in any position-
independent objects.  Since `elfFile->getBaseAddress()` should always
return 0 for any PIEs, we wouldn't correctly adjust the address to be
ELF-relative when performing symbol lookup.  (For the first section,
we just used the start of the range we found in /perf/<pid>/maps.)

There is a minor downside:
- We have to open an ELF header for each object in order to check if a
  given address is in the range of some segment.  Before, we used
  /proc/<pid>/maps to make the range check, and only opened the header
  once we knew it was the one we wanted.  In the common case, however,
  where the addresses are from our own executable, we don't open any
  more files than before (and, in fact, one fewer).

Reviewed By: luciang

Differential Revision: D3695872

fbshipit-source-id: 9bdcc77da4d658ffad5c671f9b8ea65a471ed64f

charsyam/folly,Orvid/folly,Orvid/folly,floxard/folly,floxard/folly,rklabs/folly,rklabs/folly,charsyam/folly,rklabs/folly,floxard/folly,facebook/folly,rklabs/folly,rklabs/folly,charsyam/folly,Orvid/folly,facebook/folly,facebook/folly,charsyam/folly,floxard/folly,Orvid/folly,floxard/folly,Orvid/folly,facebook/folly,facebook/folly