syncany/syncany — pull request #240 by cr0 (2014-09-30 11:17:20+00:00)
Title: SimpleXML-ification of plugin settings

This patch implements syncany/syncany#192.

In fact, this patch allows plugin developers to define their own specific plugin settings. This also includes the possibility to nest plugin settings what should allow raidX styles plugins (see syncany/syncany#191). It also adds the possibility to encrypt specific values before storing them on disk (see syncany/syncany#168).

This patch also introduces a new way of initializing a plugin by replacing `PluginOptionSpec` with `PluginOption(s)`. Now a settings are extracted from the `TransferSettings` implementation when they are annoyed with `@Element`. Furthermore the process can be altered by using the `@Setup` annotation which offers the possibility to generate a token request before actually asking the token (see syncany/syncany#226).

Last, when syncany is started for the first time a machine dependent private key is generated which can be used for encryption of e.g. settings. It's currently used to encrypt `@Encrypted` fields.

TODO: Please review all changes and assure that everything is worked as expected.
NOTE: This patch breaks compatibility with existing repositories since it alters the config file's structure.