Improved session handling, added changeUserVirtual()

Instead of altering changeUser(), I've added changeUserVirtual() (and reverted the original method), because all these numerous different cases would have caused the method to be a nightmare.
Merge branch 'master' of github.com:WoltLab/WCF