Fix computation of __builtin_type_compatible_p

Use type compatibility instead of type equality.
Thanks to David Greve for the report.
Remove spurious lines in Makefile.features
Do not hardcode size_t as unsigned for offsetof
Allow cast of functions to function pointers

Most of the time, this is not needed because we translate
function expressions to function pointers.  But this trick
is necessary to handle typeof((void*)f).
Avoid clashes for introduced __constr_expr

constrExprId was reset between each function definition, which
served no purposes and introduced clashes in the case of multiple
global compound init.
Support C99 flexible array members

Flexible array members must be:
- ignored if they are not initialized explicitely,
- rejected if they are initialized, except if they are static (unlike other
  arrays of unspecified length, the length of which is defined by the
  initializer).
Fix log message going to the wrong channel

Cprint.out was deprecated (Cprint uses Whitetrack.print directly),
but still used by some modules. Use Whitetrack.setOutput instead.
Handle trailing empty initializers inside arrays

They used to be ignored.  Now explicitely set to {0} instead of {}.
This bug has been outstanding since 1.3.8 at least.
Merge latest bug fixes from CIL
Do not reorder locals during percolation
Disable if-then-else folding