[elfabi] Add support for reading DT_SONAME from binaries

This change gives the llvm-elfabi tool the ability to read DT_SONAME from a binary ELF file into an ELFStub.

Added:

 - DynamicEntries struct for storing dynamic entries that are relevant to elfabi.
 - terminatedSubstr() retrieves a null-terminated substring from a StringRef.
 - appendToError() appends a string to an error, allowing more specific error messages.

Differential Revision: https://reviews.llvm.org/D55629

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351361 91177308-0d34-0410-b5e6-96231b3b80d8
12 files changed