Implementation of new config system

This is a working but not-yet-complete implementation of a new config system. It should be simpler, more reliable and make HearthStats Companion easier to unit test.

So far I've moved all the notification settings, window settings and monitoring method setting to the new configuration. Other settings remain in the old config system, and will be moved shortly. It should be safe to accept this pull request now if you want it urgently, but it would probably be better to wait until I've moved all the config over.
The implicit conversion is failing here presumably because `==` is available on all objects. Maven is showing this warning:
```
[WARNING] uploader/src/main/scala/net/hearthstats/Monitor.scala:62: warning: net.hearthstats.config.ConfigValue[net.hearthstats.config.MonitoringMethod] and net.hearthstats.config.MonitoringMethod are unrelated: they will most likely never compare equal
[WARNING]     setMonitorHearthstoneLog(monitoringMethod == MonitoringMethod.SCREEN_LOG)
```

I'll switch it to `config.monitoringMethod.get` to make it work. @tyrcho Do you think it would be acceptable to override `ConfigValue.equals` to handle this kind of situation, or would that be risky or cause problems?