Refactor version checks to store available versions in memory
Do not store version manifests on disk, but rather store available versions in memory.
Has the benefit of not relying on the hosts filesystem and also makes refreshing of available versions easier, because we are skipping the save and write of the manifest files to disk.