#17364 attempted to save a couple of minutes by skipping the vcpkg
steps if the vcpkg install directory was already cached.
The discussion in #15382 highlights the approach used in #17364 does not accommodate adding a new package.
This PR improves the approach to individually check whether each vcpg package is installed rather than checking for the existence of the vcpkg install directory.
This PR moves the list of required vcpkg packages into a separate file and uses changes to that file to invalidate the appveyor cache. Whenever the cache is invalidated the vcpkg sources will be updated, the vcpkg binary built and the required packages installed from the latest port files.