Fix a buffer overrun on Linux/PPC64.

The buffer in realToMangleBuffer() is too small for longdouble values.
It produces strings like 0X1.599999999999999999999999998P+1 or
0X1.999999999999999999999999998P-4 which have a length of 34. This
results in an ICE e.g. in the unit test of std.range.
split libelf.c and libmach.c
Merge pull request #1792 from redstar/overrun

Fix a buffer overrun on Linux/PPC64.
Merge pull request #1791 from WalterBright/scan

split libelf.c and libmach.c