Some fixes for the microbenchmarks (#7781)

* Return null from VM.mainView if no view exists
* Retry in connectToServiceProtocol if a view is not yet available
* Do not explicitly call exit from the benchmarks - it will not cleanly shut down the engine
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart
index a8034af..7830000 100644
--- a/packages/flutter_tools/lib/src/vmservice.dart
+++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -686,7 +686,7 @@
   }
 
   FlutterView get mainView {
-    return _viewCache.values.first;
+    return _viewCache.values.isEmpty ? null : _viewCache.values.first;
   }
 }