Optimize push/pull sync TCP request with better encoding and deflate

With clusters large than 100 nodes, the amount of data being moved is
enormous, causing unneccesary latency and bandwidth usage. Previously,
an unrealistic but interesting test of a 254 node cluster on a new MBP
would use 15-20+ MB/s of bandwith, peg all 8 cores, and bring all
nodes to a grinding halt, preventing even normal gossiping over UDP.

Moving to a simpler payload structure and adding deflate improves
performance dramatically, allowing even a single machine to run the
254 node cluster effortlessly, using only 5.5MB/s at peak with CPU
utilization staying below 5%. While artificial, the test indicates
a huge improvement in overall resource usage.

This also improves TestTCPPushPull, which wasn't actually running code
through a transmitting memberlist previously. More code-paths are
covered now, with less coupling to the internal implementation.

Signed-off-by: Evan Owen <kainosnoema@gmail.com>