visual_scale_for_window returns 1.0 whenever Overview is not
presenting, so gate the window_under_visual walk behind
is_presenting() and read the scale straight from the constant.
Use hash_map::Entry for the window geometry insert so client_size is
only computed on the vacant path, and reuse the elapsed time already
sampled for the frame in expire_wait and presentation_size_request
instead of calling start_time.elapsed() a second time.