refactor ProgramLoader, RunProcess to remove static state

**please review**
But Radu, it /is/ dependent on this class. The dependency doesn't go away if you hide it inside static methods. If you don't want this dependency to be like this, the solution is to change the dependency structure, not sweep the problem under the rug.

I suggest you do what you should have done a long time ago which is to abstract an interface for generating and using parse tables, and then fork the implementation of the interface based on whether you are using the new or old parser. But that is something for you to do in your own pull request. This is just a procedural refactoring designed to get rid of undesirable static state.