[SCHED-11] RDDGraph implementation.

Adding an implementation of an RDDGraph.
Partitioning schemes are modeled as Traits (this is so that we can detect when two
subsequent RDDs are co-partitioned, that is, partitioned identically).

Dependencies come in two flavors, "narrow" and "wide," although we _could_ add more
in the future if we wanted.