option formatters turned into objects

They are now called normalizers, each holding a validator and a description which is used in help strings.
Two more normalizers added:
- key-value list takes "key1=value1,key2=value2" and parses them into a hash
- bool accepts true/false, t/f, yes/no, y/n, 1/0 and stores the value as a boolean