fileupdater lock fix for multiprocessing
The global fileupdater variable was setup a module load level. Don't know if this was intended but it certainly creates problems in multiprocessing applications. The fileupdater is somehow inherited during the fork and later it's not clearly defined what happens if the threading lock is used. This merge request fixes the problem by wrapping fileupater into a singleton object making sure the object can not be inherited during forks. Also, it uses a primitive file locker creating a lock file which should work for threading and multiprocessing applications on linux filesystems. And as a small addition, another docker image is used for gitlab-testing which brings the gitlab testing back