corrected the way usernames are determined for per-user cache folder, to work in all cases

getpass.getuser() determines the username by environment variables. sometimes, in very rare cases, these aren't set correctly (e.g. by running 'su' on linux instead of 'su -'). to correct this, on linux, get the user's name by determining the processes uid first. this is not possible on windows (and other non-posix) platforms, which is why it takes an (ugly) conditional to solve this.

Signed-off-by: Dominik Richter <dominik.richter@gmail.com>