FOR REVIEW: (SERVER-150) flush jruby instances

FOR REVIEW: putting this branch up now for early review.  I think it's reasonably complete except that it needs more tests, but the main goal is to let people assess the risk in terms of whether it's something we think is safe enough for 1.0 or whether we think it needs to be held back for a bit.

Probably easiest to review by commit.

-------------

    This PR adds a new service function to the JRubyPuppet service.
    The new function can be used to request a flush of the JRuby pool.
    
    The function is implemented by creating a new (offline) JRuby pool
    and starting to populate it; as soon as the first instance is ready,
    we can swap it into the service and remove the old pool, and then
    continue initializing the remaining instances and cleaning up the
    old pool in parallel.  It uses clojure agents to coordinate the
    creation of the new pool and the cleanup of the old pool.

This is due to an implementation detail of clojure agents: any 'send' actions that are queued up during the execution of an action by an agent are not delivered to the target agents until *after* the agent completes the current action.  So if we do the flush stuff inline here, then the 'send' to the prime-pool agent won't be fired until after this function exits... which it never will, since it will be blocking waiting for the prime-pool agent to put an instance into the pool.

From http://clojure.org/agents :

```
If during the function execution any other dispatches are made (directly or indirectly), they will be held until after the state of the Agent has been changed.
```