Refactor the tracker process which now uses ZMQ polling rather than blocking operations for
accepting requests. This also helps when dealing with pending requests since the tracker will
try to submit them at regular intervals depending o the polling timeout value.

The staging and migrating requests are executed in the order of their arrival with staging
ones not interfering with migrating ones.
The mtime and ctime of directories is not conserved after a migration and staging step
only files respect this (with the mention that the mtime is still not properly set when
updating it via the eos.mtime)

Do the creation of directories totally asynchronously. For staging save the meta data
information of the directories in a list and only after all mkdirs are done try to set
the metadata info such as owner and xattrs. For a big number of directory entries we
could change this approach by not saving the metadata info in memory and just reparse
the file.

Implement the check_transfer method which is responsible for deciding whether or not the
transfer was done successfully. This method will also be used for the recovery process.

Use the eos tags (eos.bookingsize, eos.targetsize, eos.checksum) for the expected size of
the file and checksum when doing a transfer.
Use the execute_command wherever it's possible, i.e. for the fileinfo command on files and dirs.