[flutter_tools] remove globals from device manager, flutter tester (#61139)

Remove global variables from device manager, flutter tester devices and update tests
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 2b9912a..2e1d158 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -6,15 +6,20 @@
 import 'dart:math' as math;
 
 import 'package:meta/meta.dart';
+import 'package:process/process.dart';
 import 'package:vm_service/vm_service.dart' as vm_service;
 
 import 'android/android_device_discovery.dart';
+import 'android/android_sdk.dart';
 import 'android/android_workflow.dart';
 import 'application_package.dart';
 import 'artifacts.dart';
+import 'base/config.dart';
 import 'base/context.dart';
 import 'base/file_system.dart';
 import 'base/io.dart';
+import 'base/logger.dart';
+import 'base/platform.dart';
 import 'base/user_messages.dart';
 import 'base/utils.dart';
 import 'build_info.dart';
@@ -24,11 +29,14 @@
 import 'fuchsia/fuchsia_workflow.dart';
 import 'globals.dart' as globals;
 import 'ios/devices.dart';
+import 'ios/ios_workflow.dart';
 import 'ios/simulators.dart';
 import 'linux/linux_device.dart';
 import 'macos/macos_device.dart';
+import 'macos/xcode.dart';
 import 'project.dart';
 import 'tester/flutter_tester.dart';
+import 'version.dart';
 import 'web/web_device.dart';
 import 'windows/windows_device.dart';
 
@@ -269,42 +277,68 @@
 }
 
 class FlutterDeviceManager extends DeviceManager {
-  @override
-  final List<DeviceDiscovery> deviceDiscoverers = <DeviceDiscovery>[
+  FlutterDeviceManager({
+    @required Logger logger,
+    @required Platform platform,
+    @required ProcessManager processManager,
+    @required FileSystem fileSystem,
+    @required AndroidSdk androidSdk,
+    @required FeatureFlags featureFlags,
+    @required IOSSimulatorUtils iosSimulatorUtils,
+    @required XCDevice xcDevice,
+    @required AndroidWorkflow androidWorkflow,
+    @required IOSWorkflow iosWorkflow,
+    @required FuchsiaWorkflow fuchsiaWorkflow,
+    @required FlutterVersion flutterVersion,
+    @required Config config,
+    @required Artifacts artifacts,
+  }) : deviceDiscoverers =  <DeviceDiscovery>[
     AndroidDevices(
-      logger: globals.logger,
-      androidSdk: globals.androidSdk,
+      logger: logger,
+      androidSdk: androidSdk,
       androidWorkflow: androidWorkflow,
-      processManager: globals.processManager,
+      processManager: processManager,
     ),
     IOSDevices(
-      platform: globals.platform,
-      xcdevice: globals.xcdevice,
-      iosWorkflow: globals.iosWorkflow,
-      logger: globals.logger,
+      platform: platform,
+      xcdevice: xcDevice,
+      iosWorkflow: iosWorkflow,
+      logger: logger,
     ),
-    IOSSimulators(iosSimulatorUtils: globals.iosSimulatorUtils),
+    IOSSimulators(
+      iosSimulatorUtils: iosSimulatorUtils,
+    ),
     FuchsiaDevices(
       fuchsiaSdk: fuchsiaSdk,
-      logger: globals.logger,
+      logger: logger,
       fuchsiaWorkflow: fuchsiaWorkflow,
-      platform: globals.platform,
+      platform: platform,
     ),
-    FlutterTesterDevices(),
+    FlutterTesterDevices(
+      fileSystem: fileSystem,
+      flutterVersion: flutterVersion,
+      processManager: processManager,
+      config: config,
+      logger: logger,
+      artifacts: artifacts,
+    ),
     MacOSDevices(),
     LinuxDevices(
-      platform: globals.platform,
+      platform: platform,
       featureFlags: featureFlags,
     ),
     WindowsDevices(),
     WebDevices(
       featureFlags: featureFlags,
-      fileSystem: globals.fs,
-      platform: globals.platform,
-      processManager: globals.processManager,
-      logger: globals.logger,
+      fileSystem: fileSystem,
+      platform: platform,
+      processManager: processManager,
+      logger: logger,
     ),
   ];
+
+  @override
+  final List<DeviceDiscovery> deviceDiscoverers;
 }
 
 /// An abstract class to discover and enumerate a specific type of devices.