Remove config.h
Use #if !HAVE_… for platform checks

This works with both the CMake and the Autoconf generated config.h files
Properly initialise sigset_t
Support building with CMake in addition to automake
Allow building without dispatch i/o
Fix compiler warnings

- signed/unsigned compiler warning
- fix unknown #pragma warning from GCC
Teach CMake to build & run the test suite
Numerous improvements to CMake build
Teach CMake to install man pages, headers, libraries
Numerous tweaks, casts, etc for C++ compatibility
Teach CMake to optionally compile .c files as C++
gcc compat: ensure Clang's feature-checking macros don't cause errors

These were previously defined too late in internal.h, so other headers were trying to use them, which caused gcc to complain.
g++ compat: fix warning about templates with C linkage
g++ compat: workaround incomplete designated initialiser support

With gcc 4.7, you can use the C99 `.member = value` syntax in C++, provided that you initialise the members in the correct order, and you don't skip any. You get a cryptic compile error ("sorry, unimplemented") if you fail to do this. Designated initialisers don't seem to work at all in g++ < 4.7.
g++ compat: suppress missing field initialiser warnings
Warn if no compiler support for blocks