Guts: Refactor new type reference generator to load type docs from JSON

Basically, just de-symbolize all the key references, since hash keys loaded from
JSON are strings. This is the first step in isolating the type docs loader code
and protecting it from other installed copies of Puppet. Now that we can build
it all from JSON, the part of the code that interacts with Puppet can be pushed
out into a subshell, with the blob of JSON being the only data exchanged
between the two processes.
Guts: Isolate type docs loader in subshell to avoid load path contamination

This puts the new type reference on par with the other references in terms of
avoiding contamination from other copies of Puppet in the load path. As in, it's
not perfect, and don't install Puppet as a gem or from a package.
Merge branch 'master' into HEAD