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.
{
public:
    
    void writeProgress();
    void writeFinalProgress();
    
    void clearProgressOutput();
    
    void resetProgress();
    
    
    
    
    
    
    bool updateProgress(const Progress & value);
    
    
    
    void setFileProgressCallback(ContextMutablePtr context, bool write_progress_on_update = false);
    
    double elapsedSeconds() const { return watch.elapsedSeconds(); }
    void addThreadIdToList(String const & host, UInt64 thread_id);
    void updateThreadEventData(HostToThreadTimesMap & new_thread_data, UInt64 elapsed_time);
private:
    size_t getUsedThreadsCount() const;
    double getCPUUsage() const;
    struct MemoryUsage
    {
        UInt64 total = 0;