make usage of libulz optional

in case libulz is not used, the standard stdio.h snprintf function is used,
and instead of the fileparser to read resolv.conf, stdio FILE* based functions.
the latter is slightly inefficient regarding code size, but if tiny binaries
are of importance, libulz should be used anyway.
firedns.h: add struct tag to typedef

that way both firedns_state and struct firedns_state work as expected.
Makefile: support compilation of examples and tests
examples/fdnsmxalist.c: print a warning that functionality is unimplemented
fix tests
display an error when user turned off C99 CFLAGS in config.mak

for example by doing something like
CFLAGS = -g3 -O0
instead of
CFLAGS += -g3 -O0
in config.mak, the user overrides the makefile CFLAGS.
examples: fix feature test macros for non-standard funcs
README: update
rename firedns_add_servers_from_resolve_conf() to firedns_add_servers_from_resolv_conf()
README: more info
firedns.h: move conditional ipv6 members to struct end

this allows to use to undef HAVE_IPV6 in your program without getting
crashes when the lib was compiled with ipv6 support.
firedns_add_server: fix whitespace
firedns.h: fix whitespace
firedns.h: make v6 connection member flag a char, and always used

otherwise the struct size will mismatch when compiled with or without
ipv6 support, and thus messing up our state struct when lib and prog
were compiled with different settings.

since it was only used as flag, we use signed char instead and get it
for free in the alignment overhead.
firedns.h: make want_list connection member a char

using the last alignment overhead slot from the other char members.
that way we save 4 bytes mem for every struct.
ulz conversion fixup
examples/fdnsip: optional libulz support for size measurements
firedns_ntoa6: fix strict aliasing violation
firedns.h: remove redundant in6_addr definition
firedns.h: shrink size of connection struct by 4 bytes

those two values can never exceed 65535, so using uint16_t there
is adequate.