Direct piping

Added capability for "Direct Piping" - that is, transferring data between 2 processes directly using OS pipes and connecting them with dup2, instead of buffering the output of process 1 into python memory before sending to
process 2.

This is in response to issue #119 https://github.com/amoffat/sh/issues/119

I originally had this enabled as an option because it caused 2 unit tests to fail. But I put it back in as default after I realised the unit tests were getting the correct output, but just failing on a timing assertion:

Output of python test.py:

======================================================================
FAIL: test_multiple_pipes (__main__.FunctionalTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test.py", line 197, in test_multiple_pipes
    self.assertTrue(all([t > .15 for t in derp.times]))
AssertionError: False is not true

======================================================================
FAIL: test_piped_generator (__main__.FunctionalTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test.py", line 1024, in test_piped_generator
    self.assertTrue(all([t > .3 for t in times]))
AssertionError: False is not true

----------------------------------------------------------------------
Ran 81 tests in 18.239s

FAILED (failures=2)