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.
I took me a couple of reads to understand what this does. I'm still not entirely sure I understand what `iteritems_breadth_first` does even though the name is quite verbose. 

The name of the function is quite cryptic. Why not `cast()` instead of `_must_be()`?