Merge klib upstream.

Silence -Wstrict-prototypes and static analyser warnings

Using "(void)" provides an explicit there-are-no-arguments prototype.
Using the exact type in "malloc(...sizeof)" is clearer and silences
warnings from clang's static analyzer. (John Marshall)
Improve map module: Add to clint and CONV_SRCS
Improve map module: Fix implementation of map_has
Improve map module: Change scopes

- Move `Map` structure definition to `map_defs.h`
- Use `KHASH_DECLARE` on map_defs.h to declare khash function prototypes.
- Redefine `map_foreach` into a macro
- Refactor server.c module to use the new `map_foreach` macro.
Improve map module: Refactor into a macro library

The map_* declarations and definitions are now created by a macro invocation
with a key type parameter. Also refactored server module to use the updated
version.
Improve map module: Refactor vim_to_object_rec

Now the map.c module is used to implement the 'lookup set' for that function