Further refactor to the job submission logic

Decouple the task, job submit and job file modules.

Turn `JobFile` write into a singleton. Move `jobfile` module up a level to
become `cylc.job_file`.  Use a single dict to pass information to the `write`
method.

Rename `job_submission` package `job_sys_handlers`.

Turn instances of job system handler classes into state-less classes so they
can be instantiated much more easily.

Job system handler classes are no longer sub-classes of `JobSubmit`. This
allows their interfaces to be much more flexible.

Rename `JobSubmit` to `JobSysManager`. Turn into a singleton. Manage instances
of job system handlers. Move most job systems related logic into this class.
Move `job_submit` module up a level to become `cylc.job_sys_manager`.

Allow job system handler classes to directly format the directives. This
allows each class to have full control of what goes into the job file.

10/10 pylint scores for the job file and the job system handler modules!