~ Add handshake info hash check.
~ Starting separating protocol and high level api.

It will be more convenient to provide high level api and raw protocol
separated. In many use cases we don't worry about protocol but need some
simple things like track swarm/peer state.

So I think it will be better to refactor library in the following way:

1. Network.BitTorrent.Tracker.Protocol,
   Network.BitTorrent.PeerWire.Protocol
   For raw protocol definitions, documentation and serialization.

2. Network.BitTorrent.Tracker
   Network.BitTorrent.PeerWire
   For convenient API.

Though we should not restrict user to in some particular way, so high level
api should be flexible enough. In other words: mechanism, not
policy/framework.