Bencoding now uses sorted-map

When computing the info hash, you take compute the hash of a bencoded dictionary. To that end it makes sense to maintain sort order of bencoded dictionaries (i.e. if you wish to rencode a decoded dictionary).

I changed the bencoding language to use a `sorted-map` instead of a `hash-map` for dictionaries.