Handle reported DWARF versions from 2 to 4.

As gcc emits DWARF-4 by default since 4.8.
Add primitives to read/skip addresses & offsets

These quantities vary in size between 32b and 64b depending on respectively the
address size of the architecture and the type of the ELF object.  Under current
assumptions these always vary together, but for future proofing I've provided
two separate sets of primitives.

Also, rewrite some dumb code doing if (sizeof(long) == 4) to use the new primtives.
Better error messages on unknown DW_FORM_*
Support new DWARF-4 FORMs

for reading and skipping.  Also add enumerations for other constants introduced
in the DWARF-4 standard, not yet actually used.
Handle DW_FORM_strp for DWARF-3 and -4

The encoding of this FORM changed between versions 2 and 3 of the standard,
from a 32b offset into the .debug_str section, to an address-sized offset.
Intercept leaf or optimized functions in x86

In Ubuntu 14.04 both syslog() and __syslog_chk() in libc are now sufficiently
optimised that they don't start with the "push %ebp" instruction.  Experiment
indicates that only about 30% of functions in libc now start with "push %ebp".
Presumably the Ubuntu folks are building libc with better optimisation.

So the time has come to implement for x86 the 2nd intercept technique earlier
implemented for x86_64.
Always prepare the address index.

There's no point having this being a separate call that test programs
have to remember to do.
Handle DWARF-4 semantics of DW_AT_high_pc

which is now either absolute or relative depending on the encoded form.
Fix describe_address() for the address index case

it was returning a NULL compile_unit_t* which was causing taddr2line to
crash, despite this being trivially calculable.
Fix expected out for one of the tdumdstr tests
Fix actual buffer size bug in vlogmsg()

Woops. LLVM caught this one!