24 choice lists

Allows objects as choices lists so we can have human readable option labels with machine readable keys. e.g. {0:"off", 1:"on"}
Removes "type":"choice" , choicelist is activated by "options": listname,  Type is now used for underlying type of the entries in the list.

New socket looks like
                {
                    "name": "Set output",
                    "type": "number",
                    "options": "pifaceout",
                    "value": 0
                },

The current code will work with lists of :-
  any type of literal
  constants where values of that type are not quoted

So lists of constants containing strings, colours or urls will need to use a different type e.g. CONST_string
CONST_url but nothing has been done to implement / test that.

0 is now a valid entry in a choice list
Choice list items are marked as selected using == instead of === which means matching / persisting now works more consistently