allow matching commands on prefixes

Allow for invocations such as "ponymix get-v" or "ponymix -d SB set-d".
Bail when the command is ambiguous and print the possible matches.

This necessarily means changing the return type of string_to_command to
return the whole pair<> out of the action map to allow for useful errors
when we do arg checking (as we don't necessarily have the full command
name from the user).