The `target-agnostic.mk` file is a monolith that performs too many tasks at once.
This PR splits it into multiple independent files to delimit the different tasks.
Also moves definitions closer together for clarity. Existing external users of
`target-agnostic.mk` can include the individual splits they are interested in.