pool: Decouple scheduler from execution services

The SimpleIoScheduler is currently responsible for looking up
the execution services for a transfer as part of its scheduling
logic.

In the interest of moving towards a design without the legacy
MoverProtocol interface, this patch moves the execution service
lookup up into the PoolV4 class. The execution services are
now associated with the PoolIOTransfer class just like the
legacy MoverProtocol is. The scheduler is decoupled from the
execution services and only invoke the execute and postprocess
methods of the PoolIOTransfer.

As I am injecting the execution service factor into PoolV4, I
also cleaned up the setters of PoolV4 to use the @Required
annotation.

Eventually my goal is to move the instantiation of the legacy mover
classes into LegacyExecutionService, the only class that should
depend on this old interface. This is one of the reason why the
execution service lookup has to be moved up to happen before
the task is inserted into the queue.

Target: trunk
Require-notes: no
Require-book: no
Acked-by: Albert Rossi <arossi@fnal.gov>
Patch: http://rb.dcache.org/r/5390/