Construct the converter command line using an argv array

This makes the call to this tool similar to all the other ones.
Move the command line building function above the exec_cmdline implementation
Write the preprocessed output to a pipe instead of directly to a file

This speeds up the MSVC preprocessing significantly. When writing
the preprocessed output directly to a file, MSVC seems to do
write calls for very small chunks of the file at a time, resulting
in over 30k write calls even for a small file.

This reduces the compilation time of libav by about 50%.

This is based on analysis and a similar change for the python
wrapper in Chromium by Dale Curtis.