feat(mdtest run/auto): mdtest supports iOS devices

mdtest now supports running flutter apps on iOS devices.  From this
point, mdtest can launch applications on both Android and iOS system.
Since there is no command line tools that can get iOS device properties
like ADB does for Android, mdtest stores a device product ID to device
spec mapping and query the mapping for missing iOS device properties
like screen size, etc.  Fortunately, there is limited number of iOS
devices and the mapping can be built fairly easy compared to Android.

mdtest now uses a new third party tool called mobiledevice
https://github.com/imkira/mobiledevice to get iOS device properties.
But since not all properties are supported, a device property mapping is
needed.

The only missing feature for iOS device is that mdtest cannot wakeup and
unlock an iOS device from command line due to security issues.  All
other features are supported for both Android and iOS devices.

Since api-level property is only supported in Android and it is related
to the OS version, mdtest discards that property and only keep
os-version.  Also, os-version is related to platform type (e.g. Android
or iOS), so mdtest adds another spec property "platform" in the test
spec.  "platform" property must be specified for other properties that
depend on platform type.  In the current version, only "os-version"
depends on "platform".

Change-Id: Id7a310ef8307cfe544def0dab6810f3c23e0cd89
12 files changed