Magnet support

A pretty big change, that depends on #22.

Here, instead of starting exchanging the data directly (because we don't know about it), we set a few shortcuts to handle communication through the DoMetadata method. Once metadata has completely arrived, we disable the shortcuts to treat communication as usual.

This metadata handling happens mainly in `torrent.go`, which starts to be pretty big.. I believe it's time to spread the logic, in the direction of multi torrents