ensure that all providers have the same method signature
ensure that all providers have the same method signature

added optional scope, so that the controller doesn't need to know which
provider it is talking to.

mitsuru/switch_user,cyanna/switch_user,flyerhzm/switch_user,mitsuru/switch_user,cyanna/switch_user,MustWin/switch_user,vkill/switch_user,vkill/switch_user,flyerhzm/switch_user,gregmolnar/switch_user,MustWin/switch_user