(PDB-747) Initial schema for structured facts support

This patch adds an initial schema for structured facts support.

Signed-off-by: Ken Barber <ken@bob.sh>
(PDB-708) Structured fact storage

Here we add the initial work required to start storing structured facts in
its new schema.

Signed-off-by: Ken Barber <ken@bob.sh>
(PDB-708) Migrate from old facts schema to new structure aware schema

This changes the structured-facts migration to move data from the previous
schema to the new.
(PDB-745) Structured facts garbage collection

This updates the garbage-collect! function to accomodate the new schema.
(PDB-708) Add backwards compatible querying capability for facts

This patch fixes our queries so that the old facts end-point still returns
facts.

It uses the new schema, but is only able to display items at the top level
for now. It does this by checking a depth column we populate upon command
submission to fact_paths.

As a consequence of this change, it creates some question about backwards
compatibility. For now I'm reverting the change to unstringify the facts
at the terminus so the old behaviour is still kept end-to-end.

Signed-off-by: Ken Barber <ken@bob.sh>
Merge pull request #1019 from kbarber/ticket/master/pdb-708-structured-fact-storage

(PDB-708) Structured fact storage
Allow empty arrays and hashes in structured facts

We were getting validation errors in factmap-to-paths code due to the lack
of proper handling for empty hashes and arrays. This patch drops those branches
quickly and now moves onto the next element.

Signed-off-by: Ken Barber <ken@bob.sh>
Merge pull request #1021 from kbarber/maint/master/allow_empty_hashes_and_arrays_in_sfacts

Allow empty arrays and hashes in structured facts
(PDB-711) Initial work on factset end-point

Got some of the json "restructuring" stuff done, need to connect it with
data coming from the DB.

Rename factset app from copy/paste problem.
(PDB-711) Add factsets endpoint to V4 PuppetDB API

This pull request adds the /factsets endpoint specified in the
"Structured Facts Design and Plan" document circulated to Puppet-dev
on June 30.  The response is a list of maps, each describing the
facts, environment, and time of most recent fact submission for
an agent node.
Merge branch 'ticket/master/pdb-711-factset-endpoint'

* ticket/master/pdb-711-factset-endpoint:
  (PDB-711) Add factsets endpoint to V4 PuppetDB API
  (PDB-711) Initial work on factset end-point
(PDB-712) Adapt PDB import/export to structured facts.

This pull request accomodates structured/typed facts in the PuppetDB
import/export routine.
Merge pull request #1022 from wkalt/ticket/master/pdb-712-structured-export

(PDB-712) Structured facts export/import
(PDB-713) Modify anonymization to support structured facts

This pull request modifies the PuppetDB anonymization tool to retain some
structure in anonymization of structured facts. Top-level values are now anonymized
random values of matching type. Maps are anonymized in a type-sensitive way to
arbitrary depth.
Merge pull request #1023 from wkalt/ticket/master/pdb-713-modify-anonymize

(PDB-713) Modify anonymization to support structured facts
Ensure factsets endpoint unescapes any delimiters

The delimiter #~ is reserved so we escape it on storage. Previously we had not
been removing the escaping from this field before returning it to the user,
this patch remedies that.

Signed-off-by: Ken Barber <ken@bob.sh>
(maint) Split out acceptance and unit test gems in a better way

We want to avoid installing all of the unit test gems when running acceptance.
This patch moves rake into its own place so we can use --without test properly.

Signed-off-by: Ken Barber <ken@bob.sh>
Merge pull request #1026 from kbarber/maint/master/fixup-gemfile-for-acceptance

(maint) Split out acceptance and unit test gems in a better way
Merge pull request #1024 from kbarber/maint/master/unescape-delimiter

Ensure factsets endpoint unescapes any delimiters
(maint) Switch confine for basic test during acc dependency installation

The way we were using confine was wrong, and since this is now more strict
in beaker it was throwing errors in the master smoke tests. This patch
just replaces it for a basic include? on the master platform instead.

Signed-off-by: Ken Barber <ken@bob.sh>