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.
My gutteral reaction is that all this `*_key` business is not needed. I haven't yet dug much deeper into the code but I feel like you could do something like this:
```python
if isinstance(self.converter_function, basestring):
    self.converter_function = import_function(self.converter_function)
```
Now this could very well be a matter of personal taste and me not liking noisy extra parameters that you may or may not use. 

For example, what happens if you do this:
```
from my.lib import hex_to_oct
ConverterElement(Number, 
    converter_function=hex_to_oct,
    converter_function_key='my.lib.oct_to_hex'  # typo??
```
Which function is it that gets to be used?