`DataTypeFactory::get` locks a mutex inside shared a context, there was a case when many threads were locked inside it

https://pastila.nl/?0043b3e6/c557368f4cf0eb87a3c6f2cc162bc693

It is not clear which thread locked the mutex for a long time. However, it may be possible to lock less inside `DataTypeFactory::get`.
{
    auto lock = getLock();
    if (!shared->lemmatizers)
        shared->lemmatizers.emplace(getConfigRef());
    return *shared->lemmatizers;
}
#endif
BackupsWorker & Context::getBackupsWorker() const
{
    auto lock = getLock();
    if (!shared->backups_worker)
        shared->backups_worker.emplace(getSettingsRef().backup_threads, getSettingsRef().restore_threads);
    return *shared->backups_worker;
}
void Context::setProgressCallback(ProgressCallback callback)
{
    
    progress_callback = callback;
}
ProgressCallback Context::getProgressCallback() const
{
    return progress_callback;
}
void Context::setProcessListElement(ProcessList::Element * elem)
{
    
    process_list_elem = elem;
}
ProcessList::Element * Context::getProcessListElement() const