Updated MainStringConverter in order to handle enum types in a generic way
This means changing the StringConverter contract from
`Class<T> getConvertedClass()` to `Optional<? extends Function<String, T>> accept(Class clazz)`