implement support for custom shells
cleanup shell bootstrapping

- save a roundtrip
- ensure POSIX shell
- use timeout
- some documentation
Merge branch 'devel' into feature/tcsh
fix shell lifetime -- tests pass again