Refined multi-platform support policies.

Feature testing is now used to support multiple platforms.
Previously, multi-platform support was based on testing
pre-defined signature macros which are considered to be
error prone and unstable. The following three features
are tested at the moment:
  1. The type of basic system calls (POSIX/Win32).
  2. The type of socket programming API (UNIX/Winsock2).
  3. The type of TUN/TAP driver (Linux/TUNTAP-Win32).
Note, TUN/TAP drivers on other UNIX platforms are *not*
supported, but adding such support for them should be
easy.
Planned support for Cygwin was removed. The virtual network
adapater TUN/TAP-Win32 is needed, but the API to it is based
on Windows system calls which are inconvenient to use under
Cygwin. This is a design choice of Cygwin. By design, Cygwin
is a POSIX implementation on Windows, thus mixing use of
POSIX system calls and Win32 system calls is looking for
trouble. Cross build to mingw-w64 targets under Cygwin is
still supported, and is currently the only tested build
method under Windows.
Planned support for build with Visual Studio is also removed,
because C++11 support of Visual Studio is still quite lame
at the moment.