Take gevent pools as arguments to recursive functions

This allows calls to the synchronous box.py client to be wrapped in
a pool gevent. This causes the call to yield to other greenlets whenever
an API request is made. Pool size can be used to limit concurrency to avoid
rate-limit errors.