setFailedToLaunch has a weird asymmetric api: now launchErrorMessage is a string property.
failedToLaunch remains and is internally set true the first time a message is set (is not posssible to set it back to false)
the message is in turn used by the scriptengine for the user visible error message.
It is done in 2 places:
if the applet package is invalid (applet not found) the message is created by the containment
if the applet package is valid, but there is a parse error in the qml file the error message is generated by the scriptengine of the applet itself.
I'm still really not happy about how the error ui is generated.
modes were a bit of a hack to easily allow one C++ plugin to handle
multiple (to the user) wallpapers. this just doesn't seem necessary
anymore (and even in the C++ case could have been addressed by compiling
multiple plugins that share code)