gdm: Integrate username asking into the ShellUserVerifier flow

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.
gdm: Make the smartcard and service status fields private

We don't need to export these publicly any more.
retrigger greeter