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.
true, we are just guarding against the possibility that ```as_bare_value``` isn't an attribute of ```val.value``` and in the case where it doesn't exist, just use ```val.value``` instead.  Testing first seems rather non-pythonic (better to do than ask permission).