pool: Improve how we deal with unexpected files in pools

We recently observed all kinds of weird behaviour related to whether
some files did or did not exist on a pool. We don't quite know how
we got into that mess, but we do know that dCache was not particularly
good at recoverying from the situation.

Essentially, an unexpefted file in the data directory or an unexpected
entry in the pool would cause pools to disable themselves or go into
retry loops, respectively.

This patch implements a number of defensive moves. MetaDataCache now
deletes replicas it didn't load during startup and didn't create itself,
eg files that got injected by staging after dCache timed out. If dCache
receives a request to create an entry that already exists, we now
defensively register the pool location; this mirrors the opposite situation
in which somebody tries to open a file that does not exist on a pool - in
that situation we already defensively deregistered the pool location.

Target: trunk
Request: 2.9
Request: 2.8
Request: 2.7
Request: 2.6
Require-notes: yes
Require-book: no
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: http://rb.dcache.org/r/6991/
(cherry picked from commit 69fbf87d1dedc111fbfaf9321e80e2222ccafd5d)
Merge pull request #556 from gbehrmann/fix/2.7/rb6991

Fix/2.7/rb6991