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
Refactor task proxy

Remove task proxy class generation logic. Move `cylc.task_types.task` module to
`cylc.task_proxy` and rename the `task` class as `TaskProxy`. Each task proxy
is no longer its own class, but they all belong to the `TaskProxy` class.

Allow `-`, `+`, `%`, and `@` characters as task names.

Simplify logic in various places.

Reduce memory footprint.

More pep8 and pylint fixes.