Produce a header from identifiers found in preprocessing, include it later

These identifiers include a lot of stuff, but most usefully names of all
functions that are called by the source. We can leverage this to
generate forward declarations for builtin functions that might be used
by the program, so it's parsed correctly.

Currently the header just includes #warning directives about stuff we
might need to declare, however.
Add back math etc builtin function declarations, but only if used

This is done by matching identifier tokens found by the lexer when
preprocessing against known builtin function names, and emitting
the correct _CL_DECLARE_... macro invocations for those which
match.

Note that the original _CL_DECLARE_... macros from POCL are used, but
only a few of them are usually invoked, with few parameters.

This reverts commit 5be1033f745f944b9484996b30a3394c16ecbe65.
Now that we declare used functions, re-enable warning for not doing that

However, first fix -I and -include flags in CLI webcl-validator;
otherwise some tests requiring that fail which accidentally passed when
the warning was disabled. Tests adjusted accordingly.

This reverts commit 600d0403c11ba85fc84360aaa95326bfc3a09fe3.