Turns out VM service only accepts flat parameter name/value pairs. It
only worked this far because vm_service_client (mistakenly) uses JSON
encoder to encode parameters.
This change separates the Command type hierarchy from that of Result and
tightens type constraints on Command object parameters.
This commit contains:
- FlutterDriver API for e2e tests usable in conjunction with package:test
- FlutterDriverExtension to be enabled by the application in order to
allow an external agent to connect to it and drive user interactions and
probe into the element tree
- initial implementations of tap, findByValueKey and getText commands (to
be expanded in future PRs)