CPU usage is misreported.

Currently "0 CPU" means "no CPU metric received in the previous ProfileEvents packet". But there can be many ProfileEvents packets and only a few with CPU increment.

That's why the CPU metric shows something weird like:
```
0
0
0
0
0
1234
0
0
0
...
```

This is unbearable, and the CPU metric should be either fixed or removed altogether.
{
    std::lock_guard lock(profile_events_mutex);
    auto & thread_to_times = thread_data[host];
    if (thread_to_times.contains(thread_id))
        return;
    thread_to_times[thread_id] = {};
}
void ProgressIndication::updateThreadEventData(HostToThreadTimesMap & new_thread_data, UInt64 elapsed_time)
{
    std::lock_guard lock(profile_events_mutex);
    for (auto & new_host_map : new_thread_data)
    {
        host_cpu_usage[new_host_map.first] = calculateCPUUsage(new_host_map.second, elapsed_time);
        thread_data[new_host_map.first] = std::move(new_host_map.second);
    }
}
size_t ProgressIndication::getUsedThreadsCount() const
{
    std::lock_guard lock(profile_events_mutex);
    return std::accumulate(thread_data.cbegin(), thread_data.cend(), 0,
        [] (size_t acc, auto const & threads)
        {
            return acc + threads.second.size();
        });
}
double ProgressIndication::getCPUUsage() const