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.