don't call isBuildslaveDir() twice on buildslave restart

Broke out code to start buildslave process into a utility function
startSlave(). Use it from restart() and startCommand().
specify buildslave subcommand function in it's Options class

Use subcommandFunction class variable of the subcommand's Option flag
to specify the implementing function. This is the same style used in
master cli commands implementation.
return exit code from buildslave subcommands functions

Use 'return' to communicate buildslave subcommand exit code. This is
how buildbot subcommands are implemented.
test handling of invalid arguments to 'buildslave' cli command

Added unit tests on code in buildslave.scripts.runner.run() that
handles invalid command line arguments.
unit test successful invocation of 'buildslave' cli command
unit test options parsing for 'buildslave' command without arguments

Test that buildslave.scripts.runner.Options class flags invocation of
'buildslave' command without arguments, as invalid.
unit test handling of '--verbose' option for 'buildslave' command
unit test handling of '--version' option for 'buildslave' command
added unit tests on buildslave cli Options classes
buildslave cli: broke out subcommand code to separate modules

Moved sumcommands implementations from buildslave.scripts.runner to
separate modules, one for each subcommand.