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.
Does this memoize depend on the `self`? 
I mean, why can't we do this:
```python
    def __call__(self, a_value):
         try:
            return self._converted_value
         except AttributeError:
           try:
              self._converted_value = self.converter_function(a_value)
           except (TypeError, ValueError), x:
                raise CannotConvertError(...)
           return self._converted_value
```
Is it because you might have multiple string-to-integer across different keys?