Today, the fields dumped in the accelerator tables are hardcoded to
the 2 variants that LLVM produces. llvm-dsymutil would like to reuse
that code, but needs to ouptut another variant.
This patch makes the DwarfAccelTable generic and the emitted data
is actually derived from the list of atoms passed to its constructor.
In order not to waste memory (this structure can grow very big on
huge programs), it allocates memory for the atom contents right
after the HashDataContents struct and uses memcpy to access them.
The only hardcoded thing is that the first atom must be a DIE offset.
has the table is always used as a map from name to DIEs, this makes
sense.
From the emitted code point of view, the patch is actually NFC, we
rely on the existing tests to prove that the patch doesn' break
anything.