Test __start_xxx/__stop_xxx symbol generation.
Fix a long-standing bug related to rebooting while a
reconstruct-to-spare is underway but not yet complete.

The issue was that a component was being marked as a used_spare when
the rebuild started, not when the rebuild was actually finished.
Marking it as a used_spare meant that the component label on the spare
was being updated such that after a reboot the component would be
considered up-to-date, regardless of whether the rebuild actually
completed!

This fix includes:
 1) Add an additional state "rf_ds_rebuilding_spare" which is used
    to denote that a spare is currently being rebuilt from the live
    components.
 2) Update the comments on the disk states, which were out-of-sync
    with reality.
 3) When rebuilding to a spare component, that spare now enters the
    state rf_ds_rebuilding_spare instead of the state rf_ds_used_spare.
 4) When the rebuild is actually complete then the spare component
    enters the rf_ds_used_spare state.  rf_ds_used_spare is now used
    exclusively for the case where the rebuilding to the spare has
    completed successfully.

XXX: Someday we need to teach raidctl(8) about this new state, and
take out the backwards compatibility code in rf_netbsdkintf.c (see
RAIDFRAME_GET_INFO in raidioctl()).  For today, this fix needs to be
generic enough that it can get backported without major grief.

XXX: Needs pullup to netbsd-5*, netbsd-6*, and netbsd-7

Fixes PR#49244.
Fix build with clang.
Adjust comment to reflect reality.  (5th arg, not 4th)
Define copysignl on !long double platforms. Be consistent in the use of
weak aliases.