Some plugins may support network discovery, but may not be able to clearly
identify a device and return a list of discovery results that may
be the device, but also may not. As this breaks some app flows they
will be marked as "weak" discovery and can be excluded from said setup
wizards.
NOTE: This commit does not bump the API version even though it should
to avoid merge conflicts with other branches that do bump the version.
This fixes 5 issues in regard to types of values:
1) Default values for params in the metadata were not converted properly,
most visibly on integer values being loaded as double values.
2) Param values coming in from jsonrpc were not converted properly.
3) The plugin might set state values with invalid types or being out of range.
4) If, for some reason (e.g. earlier versions of nymea, or a plugin setting
its own params in code with a wrong type), there was a param value with a
wrong type in the system, we stored that wrong type and restored it on loading
of plugin params while instead it really should be converted to the specified
type in the ParamType.
5) If a plugin is not loaded for a configured thing, the old code would
not initialize the states properly but upon shutdown save those invalid
values to the cache.