Improve job submission

Job file now contains all the information for submitting a job.

Job file now sources `$HOME/.cylc/job-init-env.sh`,
`$CYLC_DIR/conf/job-init-env.sh` or
`$CYLC_DIR/conf/job-init-env-default.sh` on initialisation. This allows
the job environment to be globally configured for site or user.

cylc job-submit: new command for job submission. Write job submission
method and job submission method ID to job status file. Use Python to
control submission of a background job. Job submission method classes
now have methods to submit a job file instead generating a job
submission command.

Job status file now contains all the information for job poll and kill
to work.

cylc job-kill: now take only the path to the status file as an argument.

cylc job-poll: renamed from `cylc get-job-status`. Now take only the
path to the status file as an argument.

New global configuration `remote copy template`: configure the `scp`
command for copying files to remote hosts.

Global configurations `remote shell template` and `use login shell` are
now used for job submission.

New global configuration `cylc executable`: configure the command to
invoke the `cylc` command on remote hosts.

New global configuration `suite to job environment`: configure a list of
environment variables that can and/or needs to be passed from a suite to
its jobs.

cylc.job_submission.jobfile: re-ordered methods to follow the flow of
the job script.

cylc.remote: use new global configuration.

PEP8 checked for various modified Python source files.

Close #511. Close #907. Close #1077.
Sometimes I think we should support configuring a list of glob patterns to match files in `work` to move to `share` (if the task's commands aren't capable of just doing that itself) and then just blow away the work directory here every time.