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

The effect can be enabled by setting call arg _piping="direct" on the inner process.
I had issues with getting 'Input/Output error reading stdin' from dd, until
I set _tty_out=False. In the code I have therefore set _tty_out to False when
_piping == "direct". This has caused 3 of the unit tests to fail.

test2.py on my PC shows 13s vs 0.5s performance difference
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

The effect can be enabled by setting call arg _piping="direct" on the inner process.
I had issues with getting 'Input/Output error reading stdin' from dd, until
I set _tty_out=False. In the code I have therefore set _tty_out to False when
_piping == "direct". This has caused 3 of the unit tests to fail.

test2.py on my PC shows 13s vs 0.5s performance difference
Added a comment explaining tty_out change
(I had issues with getting 'Input/Output error reading stdin' from dd, until
I set _tty_out=False)
Undid my specification for a different type of piping ("direct")
after I realised that the only unit tests that were failing were
due to timing assertions

Direct piping should now occur whenever _piping==True
Removed some remnant code
comments and readability on some old code
updating changelog
Revert "Undid my specification for a different type of piping ("direct")"

This reverts commit 60bc135c9feaa322b49c6fb9c33ac06592040b04.

Conflicts:
	sh.py
tox.ini: Add "cover" target
Stop hash() from working in Python 2, to match Python 3 behaviour

This avoids DeprecationWarning warnings when running with “python2 -3”.
Add .travis.yml for Travis CI

with support for coveralls.io for code coverage tracking too.
README.md: Add Travis and Coveralls badges
Pull in pexpect issue#39

See discussion in https://github.com/pexpect/pexpect/issues/39
Python 3.4 support. Fixed README.md
sh.py should not try to execute a folder

Problem: sh attempts to execute folders because which(1) fails
         to determine that although folders may have execute-bit
         set, they are not executable by execv(3)-family calls

Symptom: such call is blocking, never returns (!)

Solution: check the target is a file (following symlinks).

Details: The internal which(1) clone will attempt to execute any
         folder matching the Command issued. So, given the PATH of:

              /usr/opt/bin/gcc   <- directory
              /usr/bin/gcc       <- executable file

         sh would attempt to execute the folder, /usr/opt/bin/gcc.

[ As executing a folder would cause sh to block indefinitely
  (an unhandled OSError is thrown on exec), the test adds a ._path
  value assertion first, which prevents this test from hanging when
  the fix is un-applied.  ]
Decode partial baked args when returning as string

Join expects the array items to be strings, not byte arrays. 

Addresses #176
include CHANGELOG.md in release uploads
Only trap sighup when the process is "backgrounded"
Logic for background was reversed.
Update SIGNALS_THAT_SHOULD_THROW_EXCEPTION tuple