The current gc tests rely on waiting on a timeout for gc to run. It's
never certain whether it has run or not or if it's still running.
This patch allows tests to trigger a gc run and gives the client
a future to know when it has completed. The gc algorithm is unchangedI but now it runs in a scheduled executor rather than as a
This work was originally done by Ivan Kelly and I am just pushing it back to open source