Fixed a pvm-spawn problem

PVM 3.4.6 as installed on my Mac (Ubuntu 12.04) refused
to spawn processes where the executable was specified in
an absolute path. The error also hit elsewhere, as the
success of spawning the child processes was not checked.
This patch introduces basename() for the PVM executable
and a check of the spawn result.
Add checkPacket sanity check

This patch adds a sanity check for packed heap data to packing
and unpacking routines. At the same time, some adjustments to
helper functions:
o offset is an StgWord (unsigned machine-word, not nat)
o get_closure_info untags the info pointer (in case it is used
  on data in the buffer, where the info ptr carries the tag)
o get_closure_info returns consistent values for size and non-pointers
  in all closures (including array closures and PAP/AP)
document -qW, modify usage printing, implement wait timeout
removed an unnecessary import
Relative info pointers in packed data

Packing relies on shipping pointers to info tables between
running RTS instances. This patch makes this possible in case
of relocatable binaries, where addresses vary, but are constant
relative to each other.
The packing routine now packs not pointers but offsets from a
known (and usually very low) address, Main_main_info.

We use the terminology of an "info offset" as opposed to an "info
pointer". Like the pointer tagging solution, offsets need to be
converted back very early during unpacking.