Change execution tasks to take config objects and add Maestro main trait...

....

1. Provides configuration objects for maestro tasks,
   so the user can specify the config once at the start
   of the job and not repeat themselves below.
2. Provides a MaestroConfig object with factory functions
   which supply default values for most upload, load,
   sqoop import/export, and hiveTable configuration parameters.
3. Provides a runner trait which can be extended to form a main
   class.
4. Moves execution tasks and related classes to exec namespace.
5. Corresponding changes to documentation, tests, and examples.

This closes #252, closes #253, fixes #223, and closes #224.
That doesn't fit in with what we did in psgl, which was:
```
object MyMainObject extends MaestroExecutionMain {
  // not actually using MacroSupport here, using it in PsglExecutionBase
  def job = PsglExecutionBase.job 
}

object PsglExecutionBase {
  def job = ... // this is where you need MacroSupport, not on MaestroExecutionMain
}

You need MacroSupport in the load template, not the specific load main class itself.