Make RemotePoolMonitor asynchronous

RemotePoolMonitorFactoryBean creates a client stub for tansparently fetching
the pool monitor from pool manager. The existing code relies on a
ScheduledExecutorService to periodically fetch a copy of the pool monitor using
blocking sendAndWait calls.

This patch eliminates the executor, using a Guava CacheLoader instead. The
CacheLoader loads the pool monitor inline the first time it is accessed and
issues asynchronous updates after that. If not accessed for 10 minutes, the
cache is discarded and the next access is again blocking.

The code is different from the existing solution by:

- not requiring a ScheduledExecutorService

- by not fetching pool monitor unless it is actually used

- by discarding pool monitor after 10 minutes if unable to refresh it, thus
  avoiding that stale data is used

- by allowing fail fast behaviour rather than always blocking for
  pool monitor to be loaded

The last point is configurable: CellStub can be configured to retry on no route
to cell errors. The SRM is configured like that. In that case a call to pool
monitor may block until pool monitor was loaded from pool manager or until the
CellStub timeout has passed. Other errors are propagated right away.  This is
in contrast to the old code which would always block and could only be broken
by issuing a thread interrupt. Services other than the SRM use fail fast
behaviour when pool manager is down (for space manager and pin manager I think
we are better off bouncing the request to the door and let it decide what to
do; xrootd always prefers fail fast).

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