Adding a new authenticator which validates incoming connection details

This change introduces a new authenticator class which handles two scenarios:
- Connection policy validation (i.e. do the details of the connection match the
  current policies set on the machine)
- Interactive connection validation (i.e. prompt the user to allow the
  connection to be established)

The first scenario is typically synchronous but the second is async, therefore
this validation mechanism must handle both.  The new authenticator class wraps
another, functional authenticator to provide a level of validation before
allowing the wrapped authenticator to take over.

BUG=617185

Review-Url: https://codereview.chromium.org/2277553002
Cr-Commit-Position: refs/heads/master@{#415715}
9 files changed