Fix sketchy User Manager code :(

This fixes two things:
- the callbacks in UserManagerScreenHandler relied on SwitchToProfile
being asynchronous, or else they would destroy UserManagerScreenHandler
and then try to return to the function which would by then be gone.
- the BrowserList observer used by SwitchToProfile that waited to see
when a new browser window was open would sometimes go out of scope (because
it was a local variable) and clean itself up, not getting to see the new
browser being opened, and therefore never running the callback.
The observable effect was that unlocking a profile would keep the user
manager open (as noone told it to hide)

This probably explains the weird flakiness observed in
https://codereview.chromium.org/129333002/

BUG=NONE

Review URL: https://codereview.chromium.org/149883004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249858 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 249858