Successful handshaking implemented.

Modified
  -src/Announcer.hs
    -Announce now returns a list of inactive peers.
    -Added convertIp function to parsePeers.
  -src/Metainfo.hs
    -Added infoLength function, which looks up the length key of the info dictionary (for convenience).
  -src/Peer.hs
    -Split Peer datatype into ActivePeer and InactivePeer datatypes.  ActivePeers represent peers we are actively communicating with.  InactivePeers represent the "pool" of possible peers we can connect to.
  -Protocol.hs
    -Empty.  Will implement the specifics of handshaking, message parsing, and how they interface with handles.
  -SocketManager.hs
    -Uses an MVar to notify the main thread if/when program finishes.
  -Torrent.hs
    -Added start function.
    -Added initiateHandshake and handleMessage functions, which are just hacked in for now.  Will be moved into Protocol.hs ideally.
    -Torrents now keep a list of active and inactive peers.
    -The "left" field of defaultAnnouncer is now correctly calculated.
  -TorrentManager.hs
    -Minor changes to the way handshakes are handled.
    -Uses an MVar to notify the main thread if/when program finishes.