(maint) Fix fact-node globbing tests

The regular expression I provided for the glob replace wasn't sufficient for
PostgreSQL to work. This patch amends it to be so.

I've also put in a test for keys with blank strings, to make sure this change
doesn't affect that case as well.

Signed-off-by: Ken Barber <ken@bob.sh>
Merge pull request #1032 from kbarber/maint/master/fix-globbing-tests

(maint) Fix fact-node globbing tests
(PDB-763) Provide trgm index handling for fact_paths

This patch adds a detection routine outside of the normal migration that will
nag the user if they don't have pg_trgm installed (or don't have a compatible
system for trgm and regexp performance, ie. pg 9.3 or above).

If trgm is working, it will manage installing the correct index on the
fact_paths table for regular expression query optimization.

Without a trgm index, globbing and regular expression queries will not use
an index and thus those queries become full table scans.

Signed-off-by: Ken Barber <ken@bob.sh>
Merge pull request #1033 from kbarber/ticket/master/pdb-763-trgm-indexing

(PDB-763) Provide trgm index handling for fact_paths
(PDB-772) Modify the facts endpoint to return structured facts

This pull request causes the v4 facts endpoint to return typed and structured
facts while leaving the v3 responses stringified as before.  It also adds a
"name" column to the fact_paths table representing the first element of a
fact's path.  This column should be renamed to "fact" in the future to avoid
confusion with the many references to 'certname' as name.
Merge pull request #1031 from wkalt/ticket/master/pdb-772-change-facts

(PDB-772) Modify the facts endpoint to return structured facts
(maint) maint/master/fix facts environment ordering

this fixes an issue with ordering by environment on the facts endpoint and
patches the corresponding blind spot in our tests.
Merge pull request #1035 from wkalt/maint/master/facts-environment-paging

(maint) fix order on environments for facts
(PDB-797) Add "name" field to fact-nodes response.

This adds a "name" field to the fact-nodes response.  The field "name"
represents the name of the parent fact of the fact node and is drawn from a
new column in the fact_paths table.
Merge pull request #1036 from wkalt/ticket/master/pdb-797-fact-nodes-name-field

(PDB-797) Add "name" field to fact-nodes response.
(PDB-718) Fact path endpoint

This implements a "fact-paths" endpoint that returns list of fact paths/types
according to the specification here:
https://docs.google.com/a/puppetlabs.com/document/d/1vWE6tBmsPmMIYKQWV8Pwes_NIR9lEMTYjUH8zJ_AlMI/edit?pli=1