(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