Zsh: soup up handling of recent directories

We're setting three standard options here that maintain the directory
stack for us automatically; instead of having to consciously remember to
use `pushd` and `popd`, you can just use `cd` (or any other directory
changing mechanism) as you normally would.

You can then use `dirs` (or `dirs -v`) to look at the directory stack.
To go to a previous entry, do `cd +N` (where `N` is the number from the
`dirs -v` listing). `popd` and `cd -`, obviously, both continue to work
as before.

Additionally, set up the `cdr` function, which can show a list of recent
directories and you can tab through the menu to navigate to one of them.
Also `cdr` (no args) is the same as `cd -`, `cdr -l` prints out the
list, `cdr<tab>` brings up the menu, and `cdr something` is equivalent
to `cd something` (and the usual tab completion works there too).