Added interface to ask which modules a module is dependent upon

Using the information from the ‘consumes’ calls, we provide the method
modulesDependentUpon to help determine module to module data
dependencies. This is used by Schedule to determine if there are any
problems given the module dependencies and the order in which modules
are specified in all Paths.
Added Schedule::checkForCorrectness to find cases of ‘unrunnable’ configurations

Using data dependencies between modules and the order in which modules must run
because of Path declarations, the algorithm determines 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.
Merge pull request #2635 from Dr15Jones/checkForCircularModuleDependencies

FWCore/Framework -- Check for unrunnable schedules