Create two functions for generating next derived event and peer-join event
Change function CheckInSwarm to UpdateSwarmInfo
Create a test function of Choking algorithm
Add a member of struct event

Add bool var is_timeout for checking the REQ_PIECE event
that current processing is timeout or not.
Add a queue(STL vector) for each peer to store request messages
Add features of piece-request (Not Stable)

1. Send request to target peers' msg_queue
2. When sending a request, replicate another one for timeout situation
Add four states for each connection between neighbor

1. Add four states: am_interested, am_choking, peer_interested, peer_choking
2. Add condition in Piece Selection for checking that the selector can download
   piece from its neighbor.
Reserve memory space for vector g_peers and req_msgs
Instead of using [] accessor of vector, changed to use at() method for this way have strong guarantee of exception safety
Update codes