Allow UNREACHABLE macro in C

Previously, the UNREACHABLE helper macro cannot be used in C code
because it was defined in terms of HAVE___BUILTIN_UNREACHABLE, which is
defined from a test on the C++ compiler. After this commit, UNREACHABLE
is defined in C if the compiler is GCC. This is rather heuristic, but
enough to suppress false warnings from GCC.
Suppress GCC warnings in capi.c
Merge pull request #109 from magicant/fix/warn

Fix GCC warning