Build a shared library properly.

 - build the library as libsdb.so.0.0.0
 - pass the -soname parameter to the linker with version 0
 - break out the compiler and linker flags for the shared build
 - compile separate object files for the shared library
Fix the "clean" target.
Honor some more compiler and linker flags.

Honor CPPFLAGS in the memcache build.
Honor LDFLAGS (and ignore CFLAGS) while linking everywhere.
Do not expose the internal implementation symbols.

Build with -fvisibility=hidden and declare only the sdb_*()
functions with default visibility.
Warnings II: Fix some signed/unsigned mismatches.

Also define the __unused macro for function arguments.
Warnings III: "const", types, visibility.

Among other things, declare the _POSIX_C_SOURCE and _XOPEN_SOURCE
feature test macros so that the system header files properly expose
the type definitions and function prototypes that we use.
Use __unused__ instead of __unused to avoid sysroot include conflicts
Update README and honor 'make -s'