Return status 500 on server error

If a settings group was badly specified and one of the commands
doesn't exist, then the server will return status 500 with an
appropriate error message.
Allow a function pointer *or* a type name

For simple commands, i.e. commands with 1 argument which can be get and
set, allow the type of the argument to be specified instead of a
parsing function.
Add new type tables

Used for Yes/No settings as well as anything in CMS1.
Flesh out the CMS1 command spec

Add missing types and data lengths.