On platforms without os.fdatasync (eg. OS-X), use fcntl.F_FULLFSYNC instead

Unfortunately, os.fdatasync doesn't exist on OS-X.  The fcntl(fd, F_FULLFSYNC) is purported to yield approximately the same results, so provide a fall-back to that if os.fdatasync is found to not exist.