option formatters moved to a separate module
key-value list and bool option formatters

- 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
option formatters turned into objects

Each holding a validator and a description which is used in help strings.