track upstream EOF in DelimitedReader to prevent calling read() on an exhausted stream
shell-quote: fix quoting bugs and allow a single string to be passed in