Allow plugins to choose the EDP implementation

This change extends the plugin interface and allows plugins
to choose an EDP implementation based on job type and cluster
configuration.

For backwards compatibility, a default implementation
of the method is provided which chooses an EDP implementation based
on job type. Sahara can provide default implementations where it
makes sense, for example the existing Oozie implementation or
a command line implementation for Spark.

Plugins are free to use the default EDP implementations provided,
or they may return any object derived from the JobEngine class.

Partial-implements: blueprint edp-refactor-job-manager
Change-Id: I09d79ac7a3e07d405cd07c4d2d3d283b11fc1baa
Merge "Allow plugins to choose the EDP implementation"