Use $XDG_CACHE_HOME/vim/undo for undo files.

There are a couple of commits in this series.  The first one sets up a `$VIM_CACHE_DIR` to be `$XDG_CACHE_HOME/vim`, if `$XDG_CACHE_HOME` is defined, or `$HOME/.cache/vim` and `$USERPROFILE/.cache/vim` if it's not, under unix and windows respectively.  The next commit removes `$VIMFILES/.undo`, and introduces the logic we talked about: using `$VIMFILES/.undo` if it exists, otherwise it'll create and use `$VIM_CACHE_DIR/undo`.  I did test this under Windows just to make sure it works.

Let me know if there's something else you'd like to see done here!