Cleanup requests submitted to RequestPool as they are completed.

Since the RequestPool keeps a reference to all submitted requests, these
are only cleaned up when the pool is cleaned itself, either by the user
explicitly with the .clean() method or by the garbage collector. This
means that the memory allocated for the results returned from requests
is kept around until all requests are done.

This patch adds a callback function to remove the reference to the
request once it is finished running.