region: Refactor input modification code to be async safe.

The previous code had a number of issues:
- It used a shared 'op' enum value for the operation - a second operation would
  overwrite this.
- It acted on the row selected at the time the operation was requested - this
  could have changed by the time the operation occurred.

Solved by passing all the required data though the async methods.
11 jobs for region-permission-refactor in 4 minutes and 10 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Build
passed #123987
build

00:01:58

 
  Test
passed #123989
asan

00:02:12

passed #123988
test

00:00:41

 
  Manual
manual #123994
allowed to fail manual
armv8
manual #123990
allowed to fail manual
flatpak
manual #123993
allowed to fail manual
msan
manual #123995
allowed to fail manual
ppc64le
manual #123991
allowed to fail manual
tsan
manual #123992
allowed to fail manual
ubsan
 
  Review
manual #123996
allowed to fail manual
review
manual #123997
allowed to fail manual
stop_review