(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 agree with your assessment of what would happen to this test if we changed the implementation of the JRuby pool, but this test is specifically designed to reproduce the use-case that cause the original bug reports to be filed about this, and I don't think there's any meaningful way to change the test and still have it be comprehensive in terms of providing coverage for the cache-flushing behavior that we desire.

It seems to me that the worst-case scenario is that we end up with a false negative result from this test if we change the pooling behavior later, in which case I believe that the comments here should make it fairly easy to update the test to correspond with the new pooling algorithm.  And if we're changing the pooling algorithm frequently enough to make this test feel like a headache, then we have much bigger problems anyway :)