Build with CMake

Instead of using a Makefile with hard-coded configurations
(e.g. Linux implies libstdc++), using CMake for
configuration.  CMake makes it (relatively) easy to check
for different warning flags and compiler bugs.
Avoid struct alignment problems in NeedClosure_

Instead of doing sizeof-based pointer arithmetic, guarantee
proper alignment for question_vtables in the NeedClosure_
struct by using a flexible array.

This was caught with a Clang diagnostic.
Enable Clang's -Wconditional-uninitialized

This caught a bug where events_received was uninitialized in
some failure cases.  The warning has many false positives,
though.