changed package structure

Also, fixed a bug in distirbuted communication by sending from Master to
each worker the number of key messages they should expect from other
Workers.  With this message, the Workers will not continue until they
have received that many messages, which prevents a bug in multithreading
where one Worker raced ahead when told my Master that all keys had been
sent, when really there could be a key still in transit in-between
worker nodes.  Now, instead of notifying the Master that they have sent
all their keys out, Workers notify Master that they have received all
their keys, preventing the race-ahead conditions