refactor ProgramLoader, RunProcess to remove static state

**please review**
But it makes no sense for `DefinitionLoader` to be dependent on something so weird as `ProgramSdf`. Somebody looking from the outside will not know how to instantiate this because it is so specific to SDF. Also, with the new parser I will have to change the dependency, but not if I only require the loader, which makes sense.