lint & KNF, no real changes.
Always try to log a message if we can't allocate memory, additional
formatting cleanups and memory error handling.
consistent error messages for populate/worker threads session & cursor
creation.
Set the phase in the execute function, give populate and worker execute
functions similar "starting run" messages.
Split the populate loop into two parts, if populate_ops_per_txn isn't
set we don't care about transactions at all.  When we do care about
transactions, just count the ops until it's time to commit, we don't
need to do a division instruction per loop.
Clean up a comment.
Replace explicit code to walk a directory hierarchy removing files with
a system(3) command -- it's just as portable and a whole bunch simpler,
fix a lost malloc error on the way.

Don't bother removing the temporary environment directory.
I split up the stub worker functions somewhere along the line, put them
back together.
The worker thread types aren't flags, they're unique integers, switch them
to enums.
Don't initialize op_name to "search", there is no "search" operation.
Once we're done the run, don't bother doing a final checkpoint.
Replace %d with % PRIu32 where values are uint32_t's.
Replace rand/srand with the WiredTiger __wt_random -- it's basically
as fast as rand, and with better random characteristics.  This means
we can't seed the random number generator, but I don't see any use
for that, anyway.