Refactor and add more tests for decoding

This adds a bunch of extra unit-tests for decoding `.torrent` files.
Fix `Torrent` decoding

This fixes our `BEncode` instance for `Torrent` by sorting the keys
lexicographically. I'd missed that on the bencode spec.