QueryBuilder can optionally accept Expr and ExprVisitor

- More test friendly
- Updated test