SimpleXML-ification of plugin settings

This patch fixes 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 (resolves syncany/syncany#168).

This patch also introduces a new way of initializing a plugin by replacing `PluginOptionSpec` with `PluginOption(s)`. Now settings are extracted from the `TransferSettings` implementation when they are annotated with `@Element`. Furthermore the process can be altered using the `@Setup` annotation which offers the possibility to generate a token request before actually asking for the token (see syncany/syncany#226).

Last, when syncany starts for the first time a machine dependent private key is generated and stored in the userconfig. It 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 works as expected.
NOTE: This patch breaks compatibility with existing repositories since it alters the config file's structure.