Support for GNU/kFreeBSD.

GNU/kFreeBSD is an experimental OS provided by the Debian project, consisting
of a FreeBSD kernel and GNU userland/libc. For a small number of cases, this
offers advantages over a more common GNU/Linux combination, such as fast
in-kernel support for ZFS storage.

This patch changes various ifdefs, either using __FreeBSD_kernel__ where a
trait from the kernel is what matters, or __GLIBC__ where a trait from the
C library matters.

This patch set has been carried downstream, in one form or another, since
1.2.3.1-1.

https://bugzilla.novell.com/show_bug.cgi?id=321634
Use host_win32 not platform_win32 in kfreebsd defines
Define PLATFORM_GNU which covers any OS with GNU userland.

This define covers kFreeBSD, not just Linux. This is required because
the error which 120d194d10ad351dd95450749cc4a62331331d8a works around is
a GNU problem, not a Linux problem, so causes FTBFS on kFreeBSD.
Merge pull request #1184 from directhex/kfreebsd

Support for GNU/kFreeBSD