Fixes SFHFKeychainUtils to store an updated password

Fixes #2521 

Corrects a problem with `SFHFKeychainUtils` that we caused with a previous update.  No passwords could be updated due to the improper dictionary being sent to SecItemUpdate.  Added a unit test as well to detect and prevent the problem in the future.

This will be cherry-picked into release/4.5 as well.
I'd rather keep the `attributesToUpdate` as a separate variable for easier debugging.