New implementation of GenerationPlan solve algorithm - get closer to classic topological sorting.
GenerationPlan: add tests as regular JUnit tests
jdk7 language adds switch(string) statement, which is reduced to a regular switch and some ExtractConstant statements from baseLanguageInternal, hence explicit dependency not to get after latter by any chance.
Generation plan tests, conflict reporting, refactoring to encapsulate solver implementation.
Generation plan, conflict handling: object for a conflict description replaced pair<whatever>, priority graph nodes don't track rules they originated from, instead, edges that represent relations between nodes do (as they map to rules clearly).
Generation plan: tune for performance. use graph nodes in dependencies, not merged groups that 'include' them - there's no reason to minimize number of edges, and all the dependencies that used to be 'included' into 'sooner' group shall be reflected with a distinct edge now.