use html5lib to parse this; update find_all calls

It seems like BeautifulSoup's normal parser can't cope with all of
this page, and I can't really figure out why.

Additionally, although find_all can treat the second argument as a
class, this isn't really documented well, so explicitly make it be a
query for a class attribute.
Try to be more robust about UTF-8 in file

This is necessary to cope with Brütal Legend.
Actually, this class_= syntax is cleaner
Remove duplicate downloads even if they're from different items

Otherwise, when we download both copies of, e.g. Anomaly: Warzone
Earth: Mobile Campaign, the second download will get a "permission
denied" as it tries to replace an existing file.