Introduce BaseFilter and reduce responsibilities of FlexibleQueryBuilder