runtime: implement addrRanges.findSucc with a binary search
runtime: implement addrRanges.findSucc with a binary search

This change modifies addrRanges.findSucc to more efficiently find the
successor range in an addrRanges by using a binary search to narrow down
large addrRanges and iterate over no more than 8 addrRanges.

This change makes the runtime more robust against systems that may
aggressively randomize the address space mappings it gives the runtime
(e.g. Fuchsia).

For #40191.

Change-Id: If529df2abd2edb1b1496d8690ddd284ecd7138c2
Reviewed-on: https://go-review.googlesource.com/c/go/+/242679
Trust: Michael Knyszek <4473450dc5c88f06e1fb787f303d7805ec2aee65@google.com>
Reviewed-by: Austin Clements <7ea35d812706d9213868749011af1ed4fa2f6aa0@google.com>
Reviewed-by: Michael Pratt <e7f1edc6d5aa9f6c8c377425db8f1a5816cbbb88@google.com>

CAFxX/go,nawawi/go,golang/go,nawawi/go,golang/go,golang/go,nawawi/go,golang/go,cloudflare/go,cloudflare/go,cloudflare/go,CAFxX/go,cloudflare/go,CAFxX/go,golang/go,cloudflare/go,golang/go,nawawi/go,CAFxX/go,cloudflare/go,nawawi/go,golang/go,CAFxX/go,nawawi/go,cloudflare/go,nawawi/go,nawawi/go,CAFxX/go,CAFxX/go,cloudflare/go,golang/go,CAFxX/go