Initial JetBrains support - Idea and PyCharm Community Editions.

Work in progress, do not merge yet.

DownloadCenter grew support for custom headers in DownloadItems.
Support for PyCharm and Idea Community Editions.

Need to add tests and refactor the JetBrains stuff a little so more logic is in the base JetBrains installer - this will allow us to add support for more IDEs easily.
ISTM duplicate URLs isn't going to be a big problem in practice. If you submit two identical requests twice, well, we're going to do two requests, but I don't really see this happening with our current frameworks. Am I missing a use case here?

It might be worthwhile to refactor the result to be a list of DownloadResults, instead of a dict of urls to results, with the list being in the same order as the list of requests. It's more symetrical to the input, and technically we could have two different requests to the same URL (different headers, etc).