### Description

Currently async_search get or status response include the following info about async_search:

```
  "is_partial" : true, 
  "is_running" : true, 
  "start_time_in_millis" : 1583945890986,
  "expiration_time_in_millis" : 1584377890986,
```

In Kibana we would also like to have something like `completion_time` that would indicate time when the search was completed. It doesn't have to be precise, having some margin of error would be fine. 

**Some context:**

Currently Kibana uses background tasks to monitor completion of searches and it saves the completion time and then later shows it to users when they restore the search. Now we are simplifying the implementation of searches restoration on Kibana side and removing search monitoring in background tasks [(RFC here)](https://docs.google.com/document/d/1xpvW0xHmdm6w6EyYzYd01JLhiPFWF1Ij-tcJxCRLO7U/edit#) so Kibana can't longer track on its side the completion time. 

x-pack/plugin/async-search/src/main/java/org/elasticsearch/xpack/search/MutableSearchResponse.java
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
import static org.elasticsearch.xpack.core.async.AsyncTaskIndexService.restoreResponseHeadersContext;
/**
 * A mutable search response that allows to update and create partial response synchronously.
 * Synchronized methods ensure that updates of the content are blocked if another thread is
 * creating an async response concurrently. This limits the number of final reduction that can
 * run concurrently to 1 and ensures that we pause the search progress when an {@link AsyncSearchResponse} is built.
 */
class MutableSearchResponse {
    private static final Logger logger = LogManager.getLogger(MutableSearchResponse.class);
    private static final TotalHits EMPTY_TOTAL_HITS = new TotalHits(0L, TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO);
    private final int totalShards;
    private final int skippedShards;
    private Clusters clusters;
    private final AtomicArray<ShardSearchFailure> queryFailures;
    private final ThreadContext threadContext;
    private boolean isPartial;
    private int successfulShards;
    private TotalHits totalHits;
    /**
     * How we get the reduced aggs when {@link #finalResponse} isn't populated.
     * We default to returning no aggs, this {@code -> null}. We'll replace
     * this as we receive updates on the search progress listener.
     */
    private Supplier<InternalAggregations> reducedAggsSource = () -> null;
    private int reducePhase;
    /**