(PDB-1011) Allow querying of PDB directly via a TK service

This commit adds a function to the PuppetDBServer service to execute a
query and return the results as a Clojure data structure (rather than
streaming JSON over HTTP). A function can be passed in that will accept
a lazy seq to consume the rows
(PDB-1020) Remove 'puts' statements from PuppetDB terminus
Merge pull request #1147 from senior/ticket/master/pdb-1011-pdb-query-from-service

(PDB-1011) Allow querying of PDB directly via a TK service
Merge pull request #1155 from cprice404/bug/master/PDB-1020-terminus-puts

(PDB-1020) Remove 'puts' statements from PuppetDB terminus
(PDB-207) Support extract as a top level query operator

Supports a single column or multiple columns, v4 only. Added tests for
facts, events, nodes, reports and resources
Created a new after-v3? test function to DRY up some version testing
Made query engine changes for factset/fact-contents/facts to support extract

The facts endpoints create projected columns in clojure code versus
having them projected via the database. Columns like value could
actually be populated from one of several columns and require additional
data (such as type). This commit allows this projection to happen in
clojure code after these new/different column changes have happened.
Merge pull request #1148 from senior/ticket/master/pdb-207-toplevel-extract-support

(PDB-207) Support extract as a top level query operator