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.
Do you mind checking that the control flow is interrupted with this?

If I remember correctly, I did add that return_main_screen() (calling _return_main_screen, which in the cli case, is calling MainLoop.quit()) is raising an exception that is catched in the event loop to stop the current code execution and adding a real quit() as idle_add (to avoid some gobject-introspection cleanup code issues when interrupting it).

That reminds me that in this case, I should remove all return call for sanity after every UI.return_main_screen() calls.