Move and model the tracker as a "Client" module

This moves `Butter.Core.Tracker` to `Butter.Core.Tracker.Client` and
organizes the code so that it's explicit that this module is only
supposed to be a Tracker consumer (while in the future we may write a
server as well).

It adds a high-level function `getPeersChan` which returns a channel of
peers, updated every-time the tracker announce URL is hit (when it's
recommended interval expires).

We should add options for the client to choose whether or not to
oblige with the interval.

*Most importantly* the client is currently always stating that it has no
pieces uploaded or downloaded. This needs to change, through a `TVar` or
`MVar` on the `Torrent` object (or some separate state object)
containing the current status.

We also need to provide functions for signaling "complete", "update" and
"stop" events.