Describe the subtask
Enable function overloading with different return types by moving returnType and returnColumns from the Function level to the FunctionDefinition level.
Currently, all overloaded function definitions share the same return type at the Function level. This prevents registering functions like:
add(x int, y int) => int
add(x float, y float) => float
With this change, each FunctionDefinition will have its own returnType and returnColumns, allowing true function overloading with different return types.
Parent issue
#6158