Reland: More verification on flutter build web, add tests and cleanup (#34173)

diff --git a/packages/flutter_tools/lib/src/web/compile.dart b/packages/flutter_tools/lib/src/web/compile.dart
index 3816377..42d6ff2 100644
--- a/packages/flutter_tools/lib/src/web/compile.dart
+++ b/packages/flutter_tools/lib/src/web/compile.dart
@@ -19,6 +19,9 @@
 WebCompilationProxy get webCompilationProxy => context.get<WebCompilationProxy>();
 
 Future<void> buildWeb(FlutterProject flutterProject, String target, BuildInfo buildInfo) async {
+  if (!flutterProject.web.existsSync()) {
+    throwToolExit('Missing index.html.');
+  }
   final Status status = logger.startProgress('Compiling $target for the Web...', timeout: null);
   final Stopwatch sw = Stopwatch()..start();
   final Directory outputDir = fs.directory(getWebBuildDirectory())