(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.
But the point of the test is to illustrate that we've fixed the problem from the perspective of the user, who would be interacting with the system via HTTP; removing that from the test would remove the guarantee that we were still testing the end user experience.  And again, it's hard for me to imagine that we are going to be making lots and lots of changes to how the instances get borrowed; if we are, we are doing something wrong.  I actually think that it might be beneficial if this test breaks if we change the borrow behavior in the future because it will force us to stop and think about whether the cache-flushing behavior will still be compatible with whatever new algorithm we come up with...