[LinuxVersion] Use "Construct on first use" idiom and add mutex

Use the "Construct on first use" idom for UTS Release (aka Linux
version) initialization. The previous implementation was fragle and
could lead to segfaults like

    __s2=0x7fffffffe480 "5.16.10-arch1-1", __s1=<optimized out>)
    at /usr/include/c++/11.2.0/bits/char_traits.h:409
    __n=<optimized out>, __s=0x7fffffffe480 "5.16.10-arch1-1", __d=<optimized out>)
    at /usr/include/c++/11.2.0/bits/basic_string.h:359
    __n=<optimized out>, __s=0x7fffffffe480 "5.16.10-arch1-1", __d=<optimized out>)
    at /usr/include/c++/11.2.0/bits/basic_string.h:354
    __str=..., this=0x7ffff7fbd2a0 <emper::lib::LinuxVersion::globalVersion[abi:cxx11]>)
    at /usr/include/c++/11.2.0/bits/basic_string.h:739
    at ../emper/lib/LinuxVersion.cpp:46
    at /usr/include/c++/11.2.0/ext/new_allocator.h:79

if globalVersion's constructor was not yet called. This is the so
called "static initialization order fiasco" in C++.

While the mutex may not be strictly requires, as we do not call
LinuxVersion's non-argument constructor nor getUtsRelease()
concurrently, it can not hurt to have one.
47 jobs for linux-version-construct-on-first-use in 15 minutes and 45 seconds (queued for 4 seconds)
latest