mk:chain-{compiler,generic}: simplify staging strategy

Use mk_multi_target so that everything is staged at once
if any target is built.  This will simplify library/header
dependencies when consuming the results and depending on
anything is good enough to bring in any transitive
dependencies.
Merge branch 'chain-simple'
program: fix bug checking for executables

Since directories pass the -x check, explicitly
exclude them to avoid choosing a directory in
mk_check_program