issue 237 fix:
* my cleanup-on-next-vfork exposed a problem not noticed until post-commit:
  the env var cleanup can't examine the app's old envp

The vfork test started failing, due to the linux kernel (incorrectly)
returning ECHILD, but it had errno set to 0 which made no sense: I tracked
it down to a significant bug that I fixed.  It needs to be in the same commit
for the vfork test to pass:

issue 238: app errno being clobbered by DR use of libc routines
* see discussion in case: for now just wrapping sscanf with libc errno
  save and restore
* added check in dispatch that libc errno not changed so we can catch
  other libc routines I overlooked
* updated docs for dr_get_mcontext(), dr_set_mcontext(), and
  dr_redirect_execution() to say that app_errno is ignored on linux,
  since we never plan to use same errno as app again

This is apparently a longstanding bug and fixes some mysterious errors we
never figured out:
* PR 314128: X apps get weird error and fail to start
* issue 238: gcc cc1 exits with failure code under debug DR; works in release

Minor tweak while updating instrument.[ch]:
* dr_module_iterator_start returns proper type dr_module_iterator_t*



SVN-Revision: 251
13 files changed