Allow the shell object to be used as a dict

For names that are impossible to use as python identifiers, use dict
syntax. This allso accepts paths to commands not on $PATH.
subclass Popen instead of monkeypatching
More callback work:

- Redo the input_callback and hope nobody uses it yet, as this is a
  backwards-incompatible change (likely unused)
- Add an exit callback and a way to turn non-zero exitcodes into errors
Version 1.6
Merge branch 'master' into debian
New upstream release
Store original kwargs in the command object for easy retrying
Merge branch 'master' into debian
New upstream release
Brown paper bag
Merge branch 'master' into debian
New upstream release