1) Renamed HostRecord -> InetAddrStorage, each object of this class
stores the InetAddress of a host (used for identifying hosts when
sending data), and the port number.

2) Now the MembershipManager class keeps a collection of MemberHost
objects (as the name suggests), which are all the currently live members
in this group.

3) Changed to priority queue when selecting heartbeat receivers. Before
we were choosing members at random, now it choosing from a priority
queue, ordered in ascending order of last time a heartbeat was sent to
hosts (the longer we haven't sent heartbeat to a host, the more likely
it'll be selected).
1) Added documentation

2) Refactor: Now all the classes that have logger are extending the
Loggable abstract class (the subclasses no longer keep a Log member
object)
TODO: add hard timestamp for heartbeat
only update last heartbeat receive time for the HB sender, instead of
sender and everyone in the payload
renaming
For communication, now all UDP connections are made through
UnreliableDatagramSocket class (a subclass of DatagramSocket). The new
class will simulate packet drops (controlled by dropRate member
variable) for send() calls.
Now heartbeat messages contain both live and left members. TODO: for
left members, fix rejoin.
fixed LEFT status update; and few renaming
Hopefully fixed some errors. Pair programming yay.
Modified logger. It totally works!
Merge pull request #1 from MythicHelm/Z

Z