refactor converters

In preparation for adding new definition and value sources (argparse, python modules, ...) I've refactored the converters.  They're now sorted into to types: to string and from string.  Both types now have dispatch functions that will relieve clients of this module from having to find the appropriate converter manually.
Even if they definitely are strings, I would use `%r` unless it's to be displayed to users. It's what it's built for and you get the added bonus that it can reveal things like it being a unicode or a byte string.