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.
I wonder if we need to think about covariance in our generated objects.

If you think of a family of executions for a family of types `T1`, `T2`, etc, all extending from `T`, then you might want to be able to use transforms or macro generated fields for `T` in the execution template, rather than forcing each individual load to specify them all.

(I haven't actually checked: maybe our software already handles this!)