Merge pull request #432 from cprice-puppet/bug/master/acceptance-failing-because-a-does-not-equal-a

Acceptance: Remove debugging output from version checking
Add a subquery example for the /nodes endpoint

Good to have an example for this as you have to extract the "certname" and
match it to "name" here as opposed to the other endpoints.
Merge pull request #435 from dalen/node_subquery

Add a subquery example for the /nodes endpoint
Generalize and improve our utility function for parsing CLI args

At some point in time the clojure CLI library that we use to parse
stopped supporting a flag to indicate 'required' arguments.  Thus,
we were getting much farther into the code than we should have been
if you left off, e.g., the `--config` option to the `services`
program.  This also resulted in useless, unintuitive error messages.

Additionally, the function that we were providing in `utils` to
generalize our CLI argument handling for other PuppetDB command-line
tools included more arguments than would be applicable to some
tools.

This commit provides a more generalized `validate-cli-args!` function
in the utils namespace, which doesn't assume any arguments besides
`--help`.  It also adds support for checking for `required` arguments
and fails with a reasonable error message if you are missing any.
First basic working version of catalog import/export

This commit adds two new cli commands (`import` and `export`),
which can import and export catalog data (as .json files) to
and from PuppetDB.

It also moves the existing `catalog` endpoint (which was intended
to provide support for doing graph visualizations of a catalog) and
all corresponding code to new namespaces named `graphviz-catalog`.
This change makes room for a new `catalog` endpoint that simply
returns catalogs in our normal wire format, without the added
functionality for counts and aggregation that were needed for the
graphviz versions.

This commit is still not quite shippable; it is missing (at least)
the following:

* ability to configure host/port for import/export commands
* read/write data to/from tarballs rather than just a directory
  full of `.json` files
* add a metadata file which indicates which version of the
  `replace catalog` command should be used during imports
* add shell scripts to simplify the use of these tools from the
  command line.