(SERVER-112) Add support for flushing environment cache

This commit introduces a new class that we can plug in to the
recently-added Puppet extension point for controlling the
eviction of entries from the directory environment cache.

It also introduces all of the corresponding plumbing that
we need on the clojure side in order to make it work.  This
includes some additional state that we need to track on each
JRuby instance to keep track of the staleness of individual
environments.

Lastly, it introduces some integration tests that actually
set up the puppet code on disk and make catalog requests
against the server to validate the caching behavior.
I had the same thought but wasn't sure about the best way to improve upon that.  I suppose we could have the grab the JRubyPuppet pool instances directly -- as opposed to having them be accessed opaquely through an HTTP client call -- and make requests through them to initialize them with "different" content, mark them stale through the formal API, and then access the instances specifically again to see that they were all "flushed" to pick up the new resources.  I don't have any other ideas on how to make this a pure "system-level" test and yet still tolerant to potential changes we may make in the future around the order in which instances are handed out for requests.