Let each type decide coerce and common super type

When adding a type from plugin, the type need to supply
whether it can coerce from given type and have a common super type

For example, if we add a CustomRegexpType and related UDFs, the `FunctionRegistry` need to know the type can coerce from `VARCHAR`