bootloaders: Always write out bootloader config file

There was an attempted optimization to only write if changed, but this
is broken - we always write the bootloader config into a new
directory.

In theory we should only be writing if it changed, but let's not do a
broken optimization.
bootloader: fdatasync() bootloader configuration

Let's be a bit more conservative here and actually fdatasync() the
configurations we're generating.

I'm seeing an issue at the moment where syslinux isn't finding the
config sometimes, and while I don't think this is the issue, let's try
it.
deploy: Call fsync() on parent directory before/after symlink swap

Let's be conservative here and try hard to ensure the symlink has the
correct content on disk.