[WIP] Re-integrate FEAT_FILTERPIPE code

I accidentally removed this feature while doing the first import. This feature makes vim use pipes instead of temporary files for writing and reading data to/from shell commands. For example

```vim
r !ls *.o " read all object files into the current buffer
%s/\(.*\).o/rm &/  " replace each [filename] with 'rm [filename]`
w !sh " execute the buffer as a shell script
```

I found that this was missing when looking for references of SHELL_READ/SHELL_WRITE in outside mch_call_shell`. To execute the commands above vim can use pipes if support was compiled, or temporary files as a fallback.

Since `mch_call_shell` will be ported to libuv, we'll just use its cross-platform IPC streams instead of temporary files so this feature might as well become permanent.