adding configuration for encryption and compression
support UDP message compression
TCP push/pull uses buffered IO
support TCP message compression
Merge branch 'f-encrypt'

Branch is not appropriately named, since it was originally for encryption, but
now adds message compression. Compression reduces the amount of TCP and UDP traffic
with a small increase in CPU. It can be controlled via a config. Additionally,
writes and reads from TCP connections are buffered to reduce syscalls.
Add version messages to everything
Drop versions that are too new for UDP messages
verify the version numbers
Fix non-compiling after rebase
Bug fixes to get compression to work with versioning
Merge branch 'versioning'

This adds a version byte to all message types that are sent. We ignore
message types that are too OLD (>= 2 versions back) or new (any version
greater than our own)
Revert "Merge branch 'versioning'"

This reverts commit 8fe3be186d9c2013d149e43baef13dc274262064, reversing
changes made to e11f821f682369707ad7e0f49ae72e180cfdf82b.
Add a random stagger to all periodic operations
Adding methods to compute scale factor on push/pull timer
change push/pull from triggerFunc to using a dynamic tick interval
Configurable protocol version number, with a min/max, defaults to min
Test that the protocol version is valid when init
Gossip out protocol min/max as part of alive message
Delegate protocol versions
Pass through the spoken protocol versions