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
Allow older versions of CMake, which seem to still work
Update Readme with CMake build instructions
Merge branch 'feature/modern-build' into develop