zhash: Add support for custom hash functions
zhash: Add support for destructor, duplicator and comparator for keys.
zlist: Add support for destructor and duplicator.
Merge pull request #652 from Q-Leap-Networks/pull-zhash-hasher

zhash: Add support for custom hash function and arbitrary key type
Problem: method names getting ugly and long

Adding depth for key management is a great idea. However it should
not make other aspects more complex. Most people do not need special
handlers for keys, so will never use these _set_key methods. So they
should not be paying the extra cost of using _item in the other
methods. Further, this leaks into other containers that don't use
keys at all.

Solution: keep the majority case methods short and sweet, use the
longer names for the rarer cases.

Also, consistency, zhash_set_key_hasher as it is for keys.
Problem: zlist needs cleaning up

- zlist_sort left in inconsistent state
- tabs in code
- description of zlist_append and _push weren't accurate
- zlist_free_fn should be deprecated (ugly and useless)

Solution: done that.
Remove unnecessary log in zsys_set_interface().
Merge pull request #653 from hintjens/master

Cleanups
Merge pull request #654 from ahhentz/to_merge

Remove unnecessary log in zsys_set_interface().
Updated man pages
msvc build fixes. explicit casts required.
Merge pull request #656 from jossgray/msvc_build_fixes

msvc build fixes. explicit casts required.
Problem: zsocket_set_xxx dies miserably if you pass a zsock_t

Solution: catch this specific error and die less miserably.
Fixed #657 properly
Merge pull request #657 from hintjens/master

Catch common error of zsocket_set_xxx on zsock_t sockets