pool: Add rate limit for pnfsmanager messages

Our admins have pointed out, that using sweeper purge or sweeper free
on a pool can easily cause an outtage in dCache: The huge number of
deregistrations sent to pnfsmanager can create a long queue which causes
timeouts in other services. Indeed, we recently had a surge of FTS
failures due to slow srmLs responses caused by 'sweeper free' calls
on a pool.

This patch addresses this problem by adding a rate limiter to pnfsmanager
requests from a pool. Rather than an adhoc solution in the pool, the patch
extends CellStub with the ability to limit the number of concurrent
requests and the ability to apply a rate limit. Thus any service that makes
use of CellStub can now easily limit how much load it induces on other
services. At the moment this is however only used in pools.

I added support for both limiting the number of concurrent requests and the
rate. According to Little's law, either has the same expressive power in a
stable system, although to convert one to the the other one has to know
the request latency. In an unstable system (consistently higher inflow than
outflow), the two are not equivalent. A rate limiter would keep sending
requests to the remote service at the configured rate, while limiting the
concurrency would lead to the sender being throttled. On the other hand,
a rate limiter can be applied to both RPC style messages and notification
(messages without a reply). Hence both have benefits and drawbacks.

The defaults in CellStub are such that no limit is applied. For pools, a
rate limit of 250 Hz pnfs manager requests is the default.

New property introduced by this patch: pool.service.pnfsmanager.rate.

Target: trunk
Require-book: yes
Require-notes: yes
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: http://rb.dcache.org/r/5878/