Adjustment on compiling flags

Quite many codes in the project needs c99 standards, such as variadic
arguments in macros, but the Makefile used to adopt iso9899:1990 (c90).

configure now also checks if the compiling flags are available in
detected compiler. If gcc is not used, other compilers are still
possible to support these features by their own extensions. In that
case, not compiling flags is explicitly given.
Fix several warnings

Many functions that send a message or get an attribute from something
don't declare their arguments as const. This commit fixes many of these
functions, together with corresponding headers.

Other warnings include non-standard use of macros, arithmetic operations
on void pointers, returning values from void functions and so on.

But some warnings about unused values and functions are left untouched,
as they may not have been fully implemented.