(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.
We discussed this issue offline; here's a summary for the record:

We agreed that this test is less-than-perfect since it relies on the implementation of the JRuby instance pool.  However, we also concluded that we don't have any good + immediately-actionable ideas on how to improve this test to avoid that shortcoming.  We also agreed that this test has value, even if it is less than perfect, so we decided to call it good enough for now.

The one change I would request here is that you add a comment to that affect - at least, point out that the test is written in such a way that it depends on our current implementation of the JRuby instance pool.