Convert the server vault to use Azure blob block storage.

- Implement an Azure blob block storage client for use with the
  server vault.  The Azure storage client library is used, and
  picked up via NuGet (however it is checked in).  The Azure blob
  storage based vault is the first step in removing the
  requirement to use sshfs on game server machines as it is
  globally accessible.  New config table variables
  "VaultConnectionString" and "UpdaterConnectionString" specify
  the Azure storage account connection strings for the Azure
  backed storage.  If no connection strings are supplied, the
  legacy storage provider is used instead.  In this mode, each
  server needs an updated xp_ServerVault.dll and must set the
  UseStoragePlugin=1 value in AuroraServerVault.ini, and the
  config table variables must be set to globally enable the
  Azure-based vault.

  The Azure block storage is implemented in ALFA.Shared, as
  ALFA.Shared.AzureFileStore and associated objects.  These
  implement an ALFA.Shared.FileStore interface to abstract away
  the notion that Azure is used as the storage.

  ALFA.Shared.FileStoreProvider is used to create an instance of
  an ALFA.Shared.FileStore (currently only a provider for Azure
  backed storage is supported).

- Add support for pulling updates from Azure storage for the ACR
  content patcher, as well as optional compression for updates
  that are pulled from Azure.  As with the vault plugin, if the
  attempt to retrieve updates from Azure failed, the vault share
  is tried instead.

- Modify the server latency monitor to check latency to the Azure
  storage service if that is in use.