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.
56 jobs for th/save-hostname-fixes in 28 minutes and 52 seconds (queued for 5 seconds)