Properly init/release iterators in zunionInterGenericCommand().

This commit does mainly two things:

1) It fixes zunionInterGenericCommand() by removing mass-initialization
of all the iterators used, so that we don't violate the unsafe iterator
API of dictionaries. This fixes issue #1240.

2) Since the zui* APIs required the allocator to be initialized in the
zsetopsrc structure in order to use non-iterator related APIs, this
commit fixes this strict requirement by accessing objects directly via
the op->subject->ptr pointer we have to the object.
Fix comments for correctness in zunionInterGenericCommand().

Related to issue #1240.
dictFingerprint() fingerprinting made more robust.

The previous hashing used the trivial algorithm of xoring the integers
together. This is not optimal as it is very likely that different
hash table setups will hash the same, for instance an hash table at the
start of the rehashing process, and at the end, will have the same
fingerprint.

Now we hash N integers in a smarter way, by summing every integer to the
previous hash, and taking the integer hashing again (see the code for
further details). This way it is a lot less likely that we get a
collision. Moreover this way of hashing explicitly protects from the
same set of integers in a different order to hash to the same number.

This commit is related to issue #1240.
Added redisassert.h as drop in replacement for assert.h.

By using redisassert.h version of assert() you get stack traces in the
log instead of a process disappearing on assertions.
assert.h replaced with redisassert.h when appropriate.

Also a warning was suppressed by including unistd.h in redisassert.h
(needed for _exit()).
Fixed type in dict.c comment: 265 -> 256.
Revert "Fixed type in dict.c comment: 265 -> 256."

This reverts commit 6253180abd9fd11a385c644fe1dee932ef83d86f.
dictFingerprint(): cast pointers to integer of same size.
Use printf %zu specifier to print private_dirty.
Merge pull request #1214 from kaoshijuan/unstable

fixed initServer fail problem
Fix for issue #1214 simplified.
Use a safe dict.c iterator in clusterCron().
Cluster: process MEET packets as PING packets.

Somewhat a previous commit broken this so CLUSTER MEET was no longer
working.
Cluster: fix CLUSTER MEET ip address validation.

This was broken by the IPv6 support patches.
Print error message when can't bind * on any address.
Opening TCP listening ports refactored into a function.
Use listenToPort() in cluster.c as well.
Cluster: set event handler in cluster bus listening socket.

The commit using listenToPort() introduced this bug by no longer
creating the event handler to handle incoming messages from the cluster
bus.
Don't update node pong time via gossip.

This feature was implemented in the initial days of the Redis Cluster
implementaiton but is not a good idea at all.

1) It depends on clocks to be synchronized, that is already very bad.
2) Moreover it adds a bug where the pong time is updated via gossip so
no new PING is ever sent by the current node, with the effect of no PONG
received, no update of tables, no clearing of PFAIL flag.

In general to trust other nodes about the reachability of other nodes is
a broken distributed programming model.
Only run the fast active expire cycle if master & enabled.