Merge branch 'fixbug' into develop
Update gitignore
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
Remove choking event
Fix the comment of uplink/downlink bandwidth
Add struct Bandwidth for bandwidth info of PeerLevel
Arrange the codes for new bandwidth info and removing duplicate function calls
Change event type REQ_PIECE to PIECE_REQ_RECV
Add src_upload_bandwidth to piece-msg struct
Add unchoke_counts to struct Peer
Change var name to exist