(PUP-3345) Fix memory leak (and add some tooling to find leaks)

This fixes a memory leak caused by Puppet::Resource caching types. The fix simply removes the cache.

This PR also contains a "benchmark" called "catalog_memory" that generates memory dump information, and a tool "memwalk" that produces a graph of instances bound in memory (it operates on the kinds of dumps produced by "catalog_memory" benchmark. The "catalog_memory" benchmark can only run under Ruby 2.1.0 and later since it depends on new methods in Ruby's ObjectSpace class.
Perhaps we can introduce the tooling as a separate PR and concentrate on just the memory leak here?