device/fido: move request precondition checks into request handlers

This moves CheckUserVerificationCompatible() from GetAssertionTask into
GetAssertionRequestHandler, and
CheckIfAuthenticatorSelectionCriteriaSatisfied() from MakeCredentialTask
into MakeCredentialRequestHandler.

These preconditions are now checked before dispatching a request onto a
FidoAuthenticator. This means, precondition checks now cover all types
of authenticators, not just FidoDeviceAuthenticator subtypes. The
FidoAuthenticator interface gets a new Options() method to support the
preconditions check (and an implementation for Touch ID is added).

Corresponding unit tests are moved from the FidoTask test into the
matching FidoRequestHandler test.

Also, remove AuthenticatorSelectionCriteria from the FidoTask class and
from the FidoAuthenticator::MakeCredential() signature, where it has
become superfluous due to this change.

Bug: 678128

Change-Id: I75259e63a8ef4fda4ecb0d8c9f8ff25f10c077a6
Reviewed-on: https://chromium-review.googlesource.com/1135601
Commit-Queue: Martin Kreichgauer <martinkr@google.com>
Reviewed-by: Jun Choi <hongjunchoi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575505}
19 files changed