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.
This also drops the __GLOBL() that was added back in commit
2175fbcfd1c7c37de76d66e618c6ea099fdc40b5 since both ld.bfd and ld.lld
automatically add the __start/__stop symbols for all orphan sections with
the name being a valid C identifier.