adding a printer for query expressions - its a debug-only feature - makes it easier to analyze the queries

I talked to @maumar yesterday. The default expression visitor can only be used for expression rewriting, e.g. all methods return Expression. We needed a visitor that we can use to return our own type (in this case TreeNode). We had a base class DbExpressionVisitor<T> for DbExpressions in EF6, but there doesn't seem to be any standard base class that we could derive from here.