HIGH PRIORITY:
- Allow desktopgui to start, stop and restart I2P. - DONE
- Correct logging system - DONE
- Internationalisation:
    * Add strings - DONE
    * Add Windows support - NEED TO CHECK
    * Might need some kind of trigger to reload the menu (for live language switching) - DONE
    * Language choice is not actually set as a parameter in I2P config?
        As a result, desktopgui always starts with the default, unless you manually set the language.
        DONE - uses routerconsole.lang -- this parameter is now updated in routerconsole as well
- Check if we're inside I2P without using a command-line parameter - DONE
- Modify installer to set I2P directory parameter; or use $I2P? - Is already there
- Include in installer - TODO
- Start desktopgui without adding to clients.config and without adding a dependency on routerconsole!
  * One possibility:
        Adding some kind of 'ApplicationManager' that allows starting applications.
        Extra remark: ApplicationManager should also allow stopping certain applications from launching.
        Suggestion:
            * ApplicationManager reads/writes clients.config
            * ApplicationManager itself: independent from clients.config?
            * Upon reboot, ApplicationManager could add a new application to clients.config _if_ the 'application.manager.version' is not there, or is smaller than the current version.
            * ApplicationManager can be the clients.config backend for routerconsole, so routerconsole is not the dependency.
            * API:
                - addConfig(args, name, ...)
                - removeConfig(int)
                - removeConfig(ConfigFilter)
                    ConfigFilter() {
                        boolean filterArgs(String args);
                        boolean filterMain(String main);
                        ...
                    }
                - editConfig(args, name, ..., ConfigFilter)
                - editConfig(args, name, ..., int)
                - editConfigArgs(args, ConfigFilter)
                - editConfigArgs(args, int)
                - ...
 * For now: added in the routerconsole startup (like the old SysTray. - DONE
    Possible migration path: startup ApplicationManager in routerconsole the first time.
- Check bug: restart is happening instead of shutdown!
- Check build order (for example: first desktopgui, only later routerconsole)
- Fix tabs versus spaces ;-)
- Add check for Java version 6 in RouterConsoleRunner!
UNKNOWN:
- API to allow applications to add themselves to the menu?
    * registerApplication(); -- should return a positive number on success, -1 on failure
    * unregisterApplication(int); -- should return nothing (or bool for success?), and the parameter should be the number given when registering the application
- Fetch I2P localhost from the core I2P application? 
- Use I2PAppContext::appDir (something like that) for desktopgui data.
- Consider SWT as option
    * Check core/java/src/net/i2p/util/FileUtil.java for dynamic jar loading
    * Possible logic:
        - First try to load SWT (has the most options and is not ugly)
        - Then load AWT
- Access router.jar from other JVM? Is this possible? -- no: use I2CP with auth (not ready yet)
- Start desktopgui with another user than the user starting I2P (required for daemon usage).
