Fix gitk.cmd to work correctly when paths contain ampersand (&) symbol

This is to fix the issue msysgit/git#245 I reported previously.

Assume the user profile is in `C:\Users\A&E\`.

The `gitk.cmd` script will fail in this case because `&` is recognized as joining two commands in a batch script, *unless* if the path is double quoted.

The easiest fix for this is to use "delayed expansion" coupled with `!` (instead of `%`) to demarcate the environment variable names.

I have also enhanced the script to fall back to the original script code when delayed expansion is not available on the target computer system (in which case, a path containing ampersand may still cause the script to fail).