This default main class executes Flink drivers.
An execution has one input, one algorithm, and one output. Anything more
complex can be expressed as a user program written in a JVM language.
Inputs and algorithms are decoupled by, respectively, producing and
consuming a graph. Currently only Graph is supported but later
updates may add support for new graph types such as BipartiteGraph.
Algorithms must explicitly support each type of output via implementation of
interfaces. This is scalable as the number of outputs is small and finite.