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.
Modify `.ident` to `.identify`
Fix broken logic

The logic for handling task removal by reload was not merged in
correctly.
Merge branch 'master' into refactor-task-proxy
Remove unnecessary logic
Merge pull request #1206 from matthewrmshin/refactor-task-proxy

Refactor task proxy