pool: Ensure clean thread shutdown

One can use one of two strategies for dealing with the life time
of threads, thread pools, timers, etc.

- Either one binds the lifetime to the cell, meaning that one has
  to shut it down when the cell is killed (at the latest), or

- one declares the threads as daemon threads and shares them
  between cells

Note that one should not use non-shared daemon threads outliving
the cell. The reason is that if one were to start, stop and
start the same cell repeatedly (eg as we do with some doors),
then we would create a new daemon thread every time. Thus such
daemon threads are shared threads.

Shared threads have the downside that they break the isolation
of the cell. A cornerstone of robust software design is to build
bulkheads into the software and the cell boundary is one
of those bulkheads in dCache - shared thread pools punch wholes
in those bulkheads.

That being said, there are situations in which shared threads are
useful - eg because the threads access a shared resource like a
disk, or because explicitly managing the lifetime is not possible
without major architectural changes in the code.

This patch modifies several pool threads to either classify them
as shared daemon threads or to manage their lifetime.

It would probably be better to move the thread pool instantiation
into spring and inject into the proper components. This would
allow us to share thread pools between classes in a pool, and
would make it easier to use the pool name as part of the thread
names. I have chosen not to do so in this patch, concentrating on
the shutdow issue first.

Target: trunk
Require-notes: no
Require-book: no
Acked-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
Patch: http://rb.dcache.org/r/5301