TAJO-1092: Improve the function system to allow other function implementation types.

Closes #178