CrashReporting

Please review and discuss.

I think some refactoring needs to be done. I don't know much about the namespace structure of the project. I also think we need to use more custom exceptions. This will later allow a better filtering of the reports. I therefore introduced a OutOfSyncException. (also to pass the SyncReport to the CrashReport, or whatever catches...)

- added unique game id: fixes #2570
- fixes #2571 (kind of)

There is a CrashReporter class (WinForms) which is a GUI for uploading CrashReports. It can be used for fatal exceptions which crashes the game.
Other GUIs (In-Game) can be added for non-fatal exceptions. (see #2850)

Uploading crash reports is disabled until the crash report server is ready and running. For now reports are only written to file "~/.openra/Crash Reports".
Merging this will allow others to improve/extend the functionality while I can work on the Server.

:)

A CrashReport looks like this:
https://gist.github.com/bidifx/a7a92bbfcea76378bcea