Add 'doctor' support for Windows (#33872)

Moves the logic for finding vcvars64.bat to a new VisualStudio class
that encapsulates finding, and providing information about, VisualStudio
installations. Adds a validator for it, and runs it for Windows
workflows in doctor.
diff --git a/packages/flutter_tools/lib/src/windows/build_windows.dart b/packages/flutter_tools/lib/src/windows/build_windows.dart
index a4ddb7d..1d08075 100644
--- a/packages/flutter_tools/lib/src/windows/build_windows.dart
+++ b/packages/flutter_tools/lib/src/windows/build_windows.dart
@@ -14,6 +14,7 @@
 import '../globals.dart';
 import '../project.dart';
 import 'msbuild_utils.dart';
+import 'visual_studio.dart';
 
 /// Builds the Windows project using msbuild.
 Future<void> buildWindows(WindowsProject windowsProject, BuildInfo buildInfo, {String target = 'lib/main.dart'}) async {
@@ -31,9 +32,10 @@
   }
   writePropertySheet(windowsProject.generatedPropertySheetFile, environment);
 
-  final String vcvarsScript = await findVcvars();
+  final String vcvarsScript = visualStudio.vcvarsPath;
   if (vcvarsScript == null) {
-    throwToolExit('Unable to build: could not find suitable toolchain.');
+    throwToolExit('Unable to find suitable Visual Studio toolchain. '
+        'Please run `flutter doctor` for more details.');
   }
 
   final String buildScript = fs.path.join(