Autopin as a daemon

This is a bigger change, but most functionality for running autopin+ as a daemon is there!

Changes:

-- Using spdlog for logging

-- Can now be run as a daemon with the -d commmandline switch

-- Completely changed error handling, so the application is more robust

-- Unix signal handling is now handled in SignalDispatcher

-- No std::shared_ptr anymore :)

-- Regression: TraceThread won't work and will probably crash the
   application!!!
Can you use something like
watchdogs.erase(std::remove(watchdogs.begin(), watchdogs.end(), i), watchdogs.end());
instead of this loop?

Not sure if it is the same, but we should try to use the stl algorithm instead of our own loops.