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

Conflicts:
	tajo-core/src/main/java/org/apache/tajo/engine/codegen/EvalCodeGenerator.java
	tajo-core/src/main/java/org/apache/tajo/engine/codegen/TajoGeneratorAdapter.java
	tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java