Currently, prompting for the username on the login screen is done
"out-of-band". This leads to subtle bugs where we're trying to
integrate two different state machines, or interpret results from
one state machine as part of another.
It also complicates the logic, as the ability to know whether we
need or want a username is currently in the UI layer rather than
the logic layer.
Move this into the verifier proper.