Make gnu symlink creation work again

Since the default configure_args is now expanded immediately it cannot depend
on variables defined later.
To fix this for users of gnu_link_progs another API change is necessary.

gnu_link_progs is now a private array of programs to link. The
private gnu_link function is renamed do_gnu_link. A new public function
named gnu_link is added which handles populating gnu_link_progs and
modifying configure_args.