Import/export acceptance tests

This commit adds two new acceptance tests: one for testing an
export from legacy storeconfigs, and one for testing the new
puppetdb import/export functionality directly.  The test of the
new import/export functionality is passing, but the legacy
storeconfigs is currently failing because PuppetDB can't handle
a catalog submission where there are no edges present in the
catalog.  After discussing this with Nick, we've decided that
the best solution is to alter the legacy export tool to generate
edges for the resources, rather than modifying PuppetDB to support
catalogs that don't contain edges.

This commit also adds some utility methods for recursive hash
diffing (required for comparing the exported JSON catalogs), and
a small fix to add the `rake package:bootstrap` target to the
setup steps if you are trying to run the acceptance tests locally.
Fixups from pull request feedback
Include Stage[main] and edges in storeconfigs export

PuppetDB expects well-formed catalogs to always have some edges.
Specifically, every resource is at least contained in Stage[main]. So in
order for our exported data to be accepted, it also needs to contain
edges. We add a (non-exported) Stage[main] resource and mark every
resource as being contained by it.
Don't export nil file/line, or any aliases, from storeconfigs

This more accurately matches the format output by the PuppetDB export
command.
Compare resource tags as sets in export acceptance tests

These are technically order-independent, but were being compared as if
they were ordered, which is incorrect.