base/tmp_file: Misc. improvements

 - Use .data() rather than manual calculation of the start pointer
 - Add ability to move out the fd
test: Catch and print a nice error message for SIGPIPE
base/subprocess: Allow precision specification of subprocess arguments

Rather than passing a string which we then use /bin/sh to parse, pass a precise array.

- Also update all users to use precise execution
- Fix broken config option found by updated JHM
base/subprocess: For EchoOutput write directly to the STDOUT file descriptor rather than using iostreams

We don't want any extra buffering
base/rigid_subprocess: Update to use current standards

 - Allow precise specification of arguments
 - vfork() isn't useful on Linux / our supported platforms
base/pump: Rewrite it to use more modern C++

 - unique_ptr for buffer manaagement
 - No hand-rolled linked lists
 - Less code overall
 - Less implementation details in the header