Split subprocess compatibility layers
Split subprocess_compat into several modules to make it easier to maintenance and extend.
Now, instead of having the threading fix in a class derived from the one enabling timeout support, have two classes both derived from subprocess.Popen, and merge them together at the package's root level:
subprocess.Popen
/ \
._timeout_popen.Popen ._threaded_popen.Popen
\ /
.Popen
This completely splits up the timeout support and threading fixes, removing any dependency from one on the other, and allows to easily add or remove another compatibility class by simply adding or removing a parent class from the root Popen empty class.