Linker: reorganize linker related code
I'm still working towards #14335. The linker code is difficult to understand/refactor especially because it is scattered in several unrelated modules (GHC.SysTools, GHC.Driver.Pipeline, GHC.Unit.State, GHC.SysTools.Tasks) so this patch puts everything in GHC.Linker.*
with some additional comments.