UDF support (pushes down all hive predicates to universal filtering UDF), some refactoring