Add Info argument to encode/decode packet
Use sets of integers rather than bit sets everywhere
Fix bug when download complete
Handle (and ignore) "extended" messages
Simplify code 

Each peer process now does its own connect, rather
than delegating that to a temp process, which leads
to a complicated hand-off procedure.

Also:

 - start block downloading at a random block, so
   that when downloading the same piece from two
   peers, one will "catch up" with the other, and
   complete faster.
 - keep track of interest/choke, so send/2 does
   not need to ignore messages with no effect.