Changing the user switching flow a bit.

The new flow will allow the consuming code to control the presentation and dismissal of the view controller, while avoiding async state issues that could arise with the old flow.