Clang 12 does not allow re-defining weak symbols as non-weak. Therefore, if
we have both SET_DECLARE and DATA_SET/etc. in the same file this triggers
compiler errors. This commit changes the default behaviour of SET_DECLARE()
to declare a non-weak symbol (i.e. we will get linker errors if the set is
empty) and adds a new SET_DECLARE_WEAK() that can be used for optional
linker sets.