Further refactor to the batch systems logic

Decouple the task, job submit and job file modules.

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

Rename `cylc.job_submission` package `cylc.batch_sys_handlers`. (It is no
longer just about job submission, but also other interaction with the batch
systems.)

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

Rename `JobSubmit` to `BatchSysManager` and turn into a singleton. Manage
instances of batch system handlers (so there is no need to create new
instances unnecessarily). Move most batch systems related logic into this
class. Move `cylc.job_submission.job_submit` module up a level to become
`cylc.batch_sys_manager`.

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

Improve `at` submission command. Use STDIN to write command to `at now`.

Improve `pbs` handler logic. If a directive key contains a space character,
then use the equal sign as the assignment operator. If a directive key does not
contain a space character, use the space character as the assignment character.
Remove the poll output filter logic, as `qstat` already returns non-zero if the
job ID is supplied as an argument and it is no longer in the queue.

10/10 pylint scores for the job file and the batch system handler modules!
Improve logic and doc strings
Update test
Fix docs and comments
Deprecate runahead in gcylc.rc
cylc gui: fix pure-families graph view
Merge pull request #1198 from benfitzpatrick/cylc-gui.fix-grouped-graph-crop

cylc gui: fix pure-families graph view
Update syntax highlighting keywords.
Merge pull request #1183 from matthewrmshin/refactor-job-submit

Further refactor to the batch systems logic
Merge pull request #1197 from arjclark/deprecate_gcylc_runahead

Deprecate runahead in gcylc.rc
Merge pull request #1199 from benfitzpatrick/update-syntax-highlight-keywords

Update syntax highlighting keywords
Hot-fix gcylc.rc deprecation version number.
Use command templates for batch system commands

Improve user interface for command template for `at`.
Merge pull request #1201 from matthewrmshin/refactor-job-submit-2

Use command templates for batch system commands
Added batch system name to gcylc text view.
Merge pull request #1204 from hjoliver/1195.gcylc-batch-sys-name

Added batch system name to gcylc text view.