Add sub process task

Add SubProcess task, derived from the Shell task.  This will act like
the Shell task, but will allow environment variables to be explicitly
set, and the process attributes to be set as with Ruby's
Process::spawn method.

This is useful if you want to set an environment variable for a
process, but the program won't allow the variable to be supplied at
the end of the command line.  That is, if something like this doesn't
work because the command treats the variable assignment as a
parameter:
  task :shell, awkward_command SOME_VAR=true'

This task is also useful if you need to manipulate the process's
execution environment, for example, by clearing environment variables,
or redirecting IO.