Fix issue with keychain storage

Since we weren't asking for any return data, SecCopyMatching would
return a successful status code, but no data.

We would in turn pass that empty dictionary as the update query,
effectively replacing the password of every item in the keychain.

Fixes #2756 

/cc @astralbodies