Rewrite copy_file() so the lflag and sflag are handled as early as possible instead of constantly checking that they're not set and then handling them at the end. This also opens the door to changing the failure logic at some future point (for instance, we might decide to fall back to copying if errno indicates that the file system does not support links).
MFC after: 1 week
Sponsored by: Klara, Inc.