Sharding?

Generate group based on shards. Is currently scanning IP's, but I'm not
sure if it is actually working in the way we want.
Add Z mod 257 as a group
Compiling sharding implementation
Add newlines to end of files
Working implementation for 1 shard, 1 thread
Sharding implementation for 3 shards

Has an off-by-one error, but shards seem roughly correct
Fix off-by-one error in shards, remove asserts

Previously was including one extra IP per shard due because the last IP
was erroroneously included in the shard, when it should be an open
interval.

Removed debug asserts that were added when testing the specific case of
3 shards, 1 thread
Fix calculation of begin for sharding with threads

begin_idx = shard_num + thread_num*num_shards
                                   ^not num_threads
Fix zsend / summary to work with sharding

Add everything together from each shard and put it into zsend, once the
last send thread finishes
Fix monitor for sharding
Fix bug causing --dryrun to silently crash at end

Previously, pcap_close() was still called on a null pcap handle when
--dryrun was passed as option, then ZMap would silently crash on the
monitor thread, returning a non-zero exit value, but with no error
message printed to stderr
Add tests for sharding, update relevant .gitignore

Requires the Python module 'sh'

sudo pip install sh
Add script to test sharding on a /16
Add sharding test for group used for 2^16*3 ips

No threading used in this test, due to bug in constraint related to
multiple threads
Remove unneccessary 'rm temp' in test script
Update documentation in shard.c

More clearly explain the formulat for shard being and end
Fix bug where cooldown period was not respected

Race condition between zsend.complete and zsend.finish.
Make sure that zsend.finish is always set before zsend.complete
Fix PAGE_MASK vs PAGE_SIZE_IN_BITS bug in pbm

This was resulting in some duplicates being able to sneak past the
deduplication checking
Remove debug printf and fflush
Max results now works with shards

All send threads now call the shard complete callback and break if
zrecv.complete is true