Add support for multiple announce servers (fixes #677)

Somebody owes me a beer.
This is an intermediate 'state' of what I am working on, and it's large enough that I decided to make a pull request.
It will go away once I've got the full thing in place.