Create a class ListLikeProcessIO for process output types

This allows you to write code that is agnostic of the specific type the process outputs.  It also adds the readCreateProcessWithExitCode function which takes a CreateProcess instead of FilePath -> [String].  This lets you set other fields of CreateProcess, such as cwd, when starting a process.  All the symbols and instances are exported by System.Process.Extras, but old modules such as System.Process.Text can still be used.

Also added are two utility functions: showCreateProcessForUser and showCmdSpecForUser.