Bind default-directory instead of using cd

Using `cd' in this way causes the `default-directory' for the buffer
where whichever command that calls `cd' was started to be changed
permanently, using `cd' to switch it back didn't work because there
would be called in a different buffer.

For use with `shell-command*' just let-binding `default-directory'
should be enough to ensure shell commands run in the right directory.