Assign runner_id attribute in the base class and update affetec code.

Also rename id -> runner_id so it doesn't clash with a builtin function name.
Should not default to by reference type.
Add new ShellCommandAction and ShellScriptAction and update other classes to
inherit from it.
Update affected mistral runner.
Update definitions for local runners.
Add new subprocess.Popen based local runner.
Fix local_sudo action - it was missing sudo parameter so it actually behaves the
same as "local" action.
For consistency with the old fabric based local runner make sure that the script
file is executable.
Fix argument passing.
Correctly quote / escape script path and arguments.
Set on_behalf_user attribute.
self.id -> self.action_exec_id.
Add more asserts.
Add another missing pipes.quote call.
Add todo annotation.
Update local runner actions so they actually use "user" option and don't
ignore it.
LocalRunner -> LocalShellRunner.
Remove out of date comment.
Don't append whitespace if there are no arguments.
Document return types.