identity: Fix occasional warning spew

It's possible to unschedule a timer when the timer is already dispatched,
but not yet holding the lock. If this happens, a precondition check
for the timer type may fail, leading to warning on the console.

This commit moves that precondition check to within the lock, and
also adds an explicit check to see if the timer has been unscheduled,
shortly after dispatch.

https://bugzilla.gnome.org/show_bug.cgi?id=709103
identity: use g_hash_table_unref not g_clear_object

the identity service finalize function is using
g_clear_object on hash tables, which is incorrect.

This commit changes the g_clear_object calls to use
g_clear_pointer and g_hash_table_unref instead.

https://bugzilla.gnome.org/show_bug.cgi?id=709103
identity: don't queue two temporary accounts for one identity

There are cases where more than one temporary g-o-a account can get
created on kinit. That is because creating a temporary account is
asynchronous, and kinit can trigger multiple refreshes of the credential
cache in one go.

This commit accounts for all pending temporary account additions in a
hash table, and filters out duplicates.

https://bugzilla.gnome.org/show_bug.cgi?id=709103