Fix HostinfoGetCmdOutput to return NULL on failure
HostinfoGetCmdOutput unconditionally calls DynBuf_DetachString
along its success path. DynBuf_DetachString never returns NULL,
so that broke callers expecting a NULL return value if the command
had no output (which can happen if HostinfoGetCmdOutput attempts to
run a non-existent executable; note that this does not trigger any
of the failure paths).
Restore the old code that checked if the DynBuf is non-empty
before retrieving its contents.
Bonus:
* Fix incorrect documentation to Posix_Popen.
* Adjust the StdIO_ReadNextLine documentation to clarify its behavior.