my own implementation of classic pushd and popd, but with tags and many more custom features