Check for unrunnable schedules

Using data dependencies between modules and the order in which modules must run because of Path declarations, we determine if the configuration is unrunnable (a module would never  get the data it wants because the Path order is wrong) or indeterminate if run in the threaded framework. The indeterminate nature could be because one Path has modules in the proper data dependency order while a second Path has them in the wrong order. Depending on which Path runs first you could get a different answer.