Refactor the `readTorrentFile` API

This makes the `readTorrentFile` interface lighter by
treating/propagating errors within the `IO` `Monad`.