[WIP, RFC] torrent file parser

This is a work in progress, I'm creating this pull request to get some reviews/comments.

Things to do:

- [x] Implement `toBEncode` methods.
- [x] Expose lenses.
- [x] Implement `Arbitrary` instances.
- [x] Add tests. (some example files files https://github.com/Fuuzetsu/torrentinfo/tree/master/test/files)

How should I add tests? Should I add some example torrent files and try to parse them? As for properties, all I can think is `fromBEncode . toBEncode $ d = Right d`. Any other ideas?
We can drop the distinction by handling the distinction while parsing.

* In case of a single file, we have only one name which suggests a name for the file.
* In case of a multi-file with only one file in the list, we have a name and a path. Name suggests a directory name while path says relative path of the file.

In second case we can replace name field with `file </> join path`.