[settings] add widget attribute

If widget attribute contains one of "radio", "combo", "slider", "spin" that widget is used,
otherwise still automatically decides which widget to use.
Not the nicest OCaml code, but works...
Also properly extract number of decimal digits and use that for spin button as well.
as requested in #795