Teach sky_tools about prebuilt artifacts

This patch makes `flutter start` work without a clone of the engine git
repository. Making this work pulled a relatively large refactor of how the
commands interact with application packages and devices. Now commands that want
to interact with application packages or devices inherit from a common base
class that holds stores of those objects as members.

In production, the commands download and connect to devices based on the build
configuration stored on the FlutterCommandRunner. In testing, these fields are
used to mock out the real application package and devices.
diff --git a/packages/flutter_tools/test/logs_test.dart b/packages/flutter_tools/test/logs_test.dart
index 0fad92f..e43bf5c 100644
--- a/packages/flutter_tools/test/logs_test.dart
+++ b/packages/flutter_tools/test/logs_test.dart
@@ -2,31 +2,25 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library logs_test;
-
 import 'package:args/command_runner.dart';
 import 'package:mockito/mockito.dart';
 import 'package:sky_tools/src/commands/logs.dart';
 import 'package:test/test.dart';
 
-import 'src/common.dart';
+import 'src/mocks.dart';
 
 main() => defineTests();
 
 defineTests() {
   group('logs', () {
     test('returns 0 when no device is connected', () {
-      applicationPackageSetup();
+      LogsCommand command = new LogsCommand();
+      applyMocksToCommand(command);
+      MockDeviceStore mockDevices = command.devices;
 
-      MockAndroidDevice android = new MockAndroidDevice();
-      when(android.isConnected()).thenReturn(false);
-      MockIOSDevice ios = new MockIOSDevice();
-      when(ios.isConnected()).thenReturn(false);
-      MockIOSSimulator iosSim = new MockIOSSimulator();
-      when(iosSim.isConnected()).thenReturn(false);
-
-      LogsCommand command =
-          new LogsCommand(android: android, ios: ios, iosSim: iosSim);
+      when(mockDevices.android.isConnected()).thenReturn(false);
+      when(mockDevices.iOS.isConnected()).thenReturn(false);
+      when(mockDevices.iOSSimulator.isConnected()).thenReturn(false);
 
       CommandRunner runner = new CommandRunner('test_flutter', '')
         ..addCommand(command);