Readonly mounts - fixes 93

Fixes #93.

Depends on #598; tests should pass once #602 is merged and this branch is merged forward.
If you wait for the process to exit before you read stdout then you may have a deadlock due to the process blocking on a write to stdout when it fills the stdout buffer.

This is similar to the deadlock the `communicate` method is intended to avoid - but in that case it's a deadlock when you wait on `stdout` and the process blocks on writing to `stderr` (or vice versa).  This code avoids the possibility of that deadlock with `stderr=STDOUT` - in other words, stderr is stdout and so the deadlock is avoided because the code is reading from stdout.

When the process exits it will close stdout and the read will complete.  Then the subsequent wait will complete immediately.