Personalization

@Berdir asked specifically to review this branch, please leave the merging to him.
I'm not sure exactly how it works but I could not change the parameter name to $uid, although that is what it contains. Then the next few lines use both uid and the User object. So I put the uid in $uid and user in $user.