newwin: fix + standardize newwin

purpose

not a meta (that's #42450), this issue is to look at the code used in newwin (startup, new window, new identity, and upcoming functions like resize-to-LB) and to make it

  • consistent (currently we have new window causes differences vs startup vs new identity)
  • reusable? code consolidation and simplicity
  • properly handle subpixels and wrong sizes

why

  • to eliminate friction for users
    • wasted real estate (e.g. 99px vertical matte)
    • tiny mattes (e.g. 1px or 10px) = looks like a rendering bug and not a feature
    • gradient eyesore (sorry! not sorry! but people hate seeing mattes)
  • to tighten fingerprinting
    • with LBing: the user's inner can slot into the wrong expected bucket
    • w/o LBing: the correct rounded size isn't used = I think you understand the implications of this
  • MOAR urgency
    • we are exposing a UI for disabling LBing (#41916 (closed)) = really bad entropy for some users

A lot of patches/ideas and effort is being spent on helping users with LB mattes, but we should at least reduce the occurrence of them and treat non-user causes not just the symptom

cc: @ma1 @pierov @richard