Features and fixes

  * Implemented timeout on request messages
  * Changed block download strategy for a specific block so that when we decide which peer to download from,
    we pick from the three top peers with the highest upload rate, but also from one random peer. This is to allow
    us to find peers that have better upload rates we never downloaded from yet.
  * Now ignore piece messages for blocks we already have
  * When we aren't done checking piece hashes on startup and peers connect to us, we now record their bitmaps and haves
  * Possibly improved shutdown time
Implemented peer download rate tracking