fido/mac: look up credential IDs before proceeding with GetAssertion requests

This changes the GetAssertion operation for the Touch ID authenticator
to locate credential IDs in the keychain at the beginning of the
request. If no matching credential exists, the user is not prompted for
a fingerprint. A method to locate a credential by ID is extracted from
the existing code and moved into the Keychain class.

This is done in anticipation of adding the WebAuthn UI. With the new UI,
GetAssertion requests will only be sent to the Touch ID authenticator,
if we know a matching credential ID to exist in the keychain.

Bug: 871370

Change-Id: Ie5e4916df2a68bc0e9d7552322d6b993069ce95b
Reviewed-on: https://chromium-review.googlesource.com/1163927
Commit-Queue: Martin Kreichgauer <martinkr@google.com>
Reviewed-by: Balazs Engedy <engedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#582369}
5 files changed