Reimplement PLT following for portability

Because
- Darwin has not one but two PLT sections
- the names of the PLT sections are different from linux-elf
- the add_plt() mechanism was always ugly

Replaced add_plt() and normalise_address() in the platform-specific
interface with is_plt_section() and follow_plt() which are much simpler.
Handle ASLR when examining live self.

Darwin applies ASLR to the main program by default, which Linux doesn't
do unless you build specially (gcc -fpie).  So to get the stacktrace
test to pass we need to handle ASLR and undo it before looking up
addresses sampled from the stack in DWARF.

The platform-specific layer reports a new 'slide' parameter for each
reported link object.  A range tree of real addresses to linkobj_t is
built in the state_t, which allows the slide to be looked up and used to
undo the mapping.
Implement get_stacktrace() for Darwin.
Implement get_argv() for Darwin.
Checking in a bunch of junk code

which I used during the Mac port to help me explore how things work on Darwin.
git-ignore .dSYM/ directories everywhere
Implement intercepts for Darwin.
Improve the tintercept test

- more useful verbose debug prints
- add a basic self-check test which ensures that
  the test function does the maths its supposed to.
Improve clean: target in tests/Makefile
Committing a copy of the Apple APSL text

which seems to be required when distributing code derived from Apple
code (we now have one tiny little assembly file which contains a fixed
version of one of Apple's libc routines).