Update README.md
Renamed Task.scala to be Job.scala

(This makes it more consistent with the way that the file naming is handled for Component/Resource)
[SCHED-12] Adding a GraphScheduler

GraphScheduler takes a Graph of tasks, and executes the tasks in topological order. Tasks which are able to be executed in parallel (because neither depends on the other) are executed using different resources.
Defined TaskGraph and GraphScheduler constructor.
Outline of a StatefulScheduler trait, along with a stub for GraphScheduler.