Retry subprocess spawning if ENOMEM

Pathologically, on systems with large numbers of database files the
volume/partition-planning step in creating a base backup can occupy
quite a bit of memory, on the order of a few hundred megabytes.  This
is because the entire tree of files is copied into program-local
memory up-front.

This memory footprint is not fantastic and methods can be used to
reduce it, but it is badly exacerbated on systems with overcommit off:
that's because fork() will momentarily double this oversized commit
charge before running exec() to execute small programs like 'psql'.
If there is momentarily not enough memory to execute fork(), prior to
this patch wal-e would crash and all the progress made in taking the
backup will be lost.

Included in this patch are a few extra hooks to control the retry
behavior that are only used in testing.  This seems a little
overwrought, but since OOM is notoriously difficult to test for, a lot
of ceremony is expended in trying to ensure the test suite is testing
properly in modeling it via monkey patching.