Huge refactoring

DO NOT MERGE AS IS !

This is a work in progress, it still needs some development and lots of tests before it can be used as the main branch.

At the moment I'm mostly using the ```MockedMain``` class as "integration tests"

Some elements to check :

Bugs detected
======
- [ ] current match tab : previous match button is doing nothing (to recheck, last game it worked)
- [ ] video replays : class is "undetected" in file name and popup to upload
- [ ] video replays : fps to adjust (too fast in video)

Needed
======
- [ ] lots of end to end tests @all
- [ ] more reliable detection when screens are skipped (such as companion started when game is ongoing) @tyrcho
- [ ] check that options are taken into account (notifications, deck overlay ...) : @adamtracymartin you could maybe check this one
- [x] Rename the module uploader-clean and remove old module uploader @tyrcho
- [ ] remove dead code or commented
- [ ] check for the call to garbage collector (code added, we have to monitor that there is no more leak)
- [ ] HS config file creation @adamtracymartin you could maybe check this one
- [ ] add link to video file name in the log

Features
=======
Reproduce all improvements made by @gtch in the meantime
- [ ] detect results based on log file
- [ ] update 'recent changes' file @gtch 
- [ ] reset options to default (merged, but need further work, see dd9df484ecd3cf29d582a81614cc100f3e33b252)
- [ ] robot to create deck @tyrcho

Done
=======
- [x] finish the code for the MatchEndPopup and check that the match is submitted
- [x] when companion is started on a defeat or victory screen, it gets an exception instead of the match popup
- [x] better toString needed in HsMatch (eg : ```Submitting match result: net.hearthstats.core.HearthstoneMatch@6cb9c607```)
- [x] match popup : only 8 deck slots visible
- [x] match popup : arena selected for unkown game mode 
- [x] when game ends, result is not detected (works with MockedMain, not with real game)
- [x] when I cancel on "finding opponent" I get a popup to submit the match
- [x] "coin detected" several times in the log
- [x] "previous match" button not enabled in "match" tab
- [x] memory leak is there again (windows)
- [x] coin and opponent name not detected 
- [x] duration and #turns not detected yet
- [x] replace catch Throwable (see [this doc](https://github.com/alexandru/scala-best-practices/blob/master/sections/2-language-rules.md#28-must-not-catch-throwable-when-catching-exceptions))
- [x] arena mode seems OK now
- [x] reset deck overlay on new match with same deck
- [x] current match tab : updated field are not taken into account
- [x] when game is closed then reopened, no more detection (not even "hs detected") @tyrcho
- [x] video replays + upload feature @tyrcho
- [x] Fix version number @gtch 
- [x] update the uploader-osx module @gtch (some minor API changes, look at uploader-win)
- [x] merged: new logo @gtch
- [x] merged: new board support @gtch
- [x] merged: updater @gtch
- [x] merged: some bugfixes from master @gtch
- [x] merged: support for Russian cards @gtch
- [x] deck recorder (merged, but need further work, see dd9df484ecd3cf29d582a81614cc100f3e33b252)