core/hostname: avoid blocking calls in NMHostnameManager setting static hostname

Of course, blocking and synchronous code is much simpler. But it's also
fundamentally wrong to block while we talk to systemd-hostnamed.

Refactor to use async operations.
57 jobs for th/save-hostname-fixes in 31 minutes and 25 seconds (queued for 10 seconds)