Only save values that were really changed
This allows to change settings without being asked for the root password
to save things that weren't modified by the user, so the
request for the root password was unnecessary.
Remove unneeded UncacheUser/CacheUser calls
Modifying the Real Name of the user was requesting the root password
because of the calls to UncacheUser/CacheUser, since modifying the Real
Name doesn't in fact need extra permissions. Also, none of the other
properties call UncacheUser/CacheUser when they're being modified, so
I tried removing the calls and it works much better here.