Add a pushd context

I find that I write this little boilerplate all the time and I think
other sh users would find it useful as well. This simply creates a
context to run commands in another directory and ensures that the
original working directory will be returned to.

Usage:

```python
from sh import pushd, pwd

pwd()
with pushd('/tmp'):
    pwd()
pwd()
```
Merge https://github.com/ppannuto/sh into pushd-context
pushd context manager for batch changing directories
refactored pushd to use args
Merge branch 'pushd-context' into release-1.10