First real cut at working "preparsed command" input.

1) describe commands in .h file with COMMAND(parsedesc, CMD_<XXX>) that
forms both the stringlist to send out and the local constants to use
for enums.  This relies on Python sending commands back in with the
right number based on the array position right now; might be better
to also have Python use the constants somehow.

2) expect command input back in form "field:value", where the
only required field is "opcode", which is now a number.  This is so
we can use a switch(){} to access all the commands.

3) command bodies can now use cmdmap["namedfield"] to get the
individual values, and can rely on their presence.  Names come from
the parsedesc in step 1 above.
wip