WLATDRI now uses a binary search to find optimal top layer fill, rather than a naive area shrink

Previously top layer fill was calculated at every iteration as
top_fill = 0.9 * top_fill_old

This caused issues when using GNRs, as occasionally the bottom layer
would be underfilled, and the naive topfill shrink algorithm would
overshoot and both increase the number of metal layers and decrease
bottom layer fill, which is the opposite of good.

Now the algorithm checks the min and max top fill options, then checks
the midpoint and proceeds with a binary search algorithm to find the
option which minimizes metal layer number and maximizes bottom layer
fill factor
WLATDRI reporting updates