[#1391] Refactor Unix daemon.

Problem description
===================

This branch started as a refactor to allow keeping files between the main process and the forked daemon.

After some work I decided to extend the changes.


Changes description
===================

I have refactored the interface for IDaemon.

The ChevahDaemon was renamed to just Daemon and for the future I prefer to remove Chevah prefix from the code.

getOpenFiles method is called to return the list of files to be keep in the forked daemon.

initialize(), start() and stop() were renamed to onInitialize(), onStart() and onStop() to signal that they should not be called directly.

DETACH_PROCESS and PRESERVE_STANDARD_STREAMS options were added to help with debugging.

The current Daemon code is an example of code that is hard to test. The problem is that since it forks the process and also messes with file description, we can not run the code in the current test suite.

I have created a few mocked unit tests and I plan to do a functional tests when integrating the changes into the server project.

Any idea about how to improve the tests is much appreciated.


How to try and test the changes
===============================

reviewers @alibotean @bnickname 

Check that changes make sense.