### 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
* The response produced by the search API. Once we receive it we stop
     * building our own {@linkplain SearchResponse}s when get async search
     * is called, and instead return this.
     */
    private SearchResponse finalResponse;
    private ElasticsearchException failure;
    private Map<String, List<String>> responseHeaders;
    private boolean frozen;
    /**
     * Creates a new mutable search response.
     *
     * @param totalShards The number of shards that participate in the request, or -1 to indicate a failure.
     * @param skippedShards The number of skipped shards, or -1 to indicate a failure.
     * @param clusters The remote clusters statistics.
     * @param threadContext The thread context to retrieve the final response headers.
     */
    MutableSearchResponse(int totalShards, int skippedShards, Clusters clusters, ThreadContext threadContext) {
        this.totalShards = totalShards;
        this.skippedShards = skippedShards;
        this.clusters = clusters;
        this.queryFailures = totalShards == -1 ? null : new AtomicArray<>(totalShards - skippedShards);
        this.isPartial = true;
        this.threadContext = threadContext;
        this.totalHits = EMPTY_TOTAL_HITS;
    }
    /**
     * Updates the response with the result of a partial reduction.
     * @param reducedAggs is a strategy for producing the reduced aggs
     * @param isFinalLocalReduce true if the local cluster search has finished (during CCS with minimize_roundtrips, this can be true
     *                           even while the overall search is still running on remote clusters)