runtests: Make it possible to pass parameters to `run` function
consumer.py: Rename modified to segments_modified just to clarify meaning
Start master daemon and workers as isolated processes
__main__.py: Replace independent worker processes by child processes
Remove subprocess dependency and register atexit for children processes

* subprocess has some bugs and is not so reliable as we've thought.
* signal handling does not work as we expected for children, that's
why the `atexit.register`.
__main__.py: Replace base64 by md5 for worker_id
subprocess: Break lock if it has expired
subprocess: Listen to SIGTERM signal
subprocess: Fix workers termination
main: Kill childs on KeyboardInterrupt
worker: Exit if someone else has acquired the lock
main: Cleanup unused code
main: Release lock if playlist is not available anymore
main: Add more logs
worker: Refactor playlist worker to be reusable/testable
worker: Break lock if other is running
__main__: Using Worker class
master: Avoid global variable
__main__: Remove unused imports
__main__: Turn start_worker_in_background into a method