[RFC] Put workdir calculation in base Buildstep class

The one is ShellCommand is generic logic enough to
be useful in base class.

Mark setDefaultWorkdir as deprecated

There as been some discussion lately about confusion on the workdir. I find it also confusing, this is an attempt to simplify things, and make a simple message for every steps the workdir should be as documented:

* workdir of the step, if defined

* workdir of the codebase, if defined

* workdir of the builder (itself defaults to 'build')


I probably have some tests to update, early upload for comments
All the test_step_* tests are deriving from test.util.steps.BuildStep, which is using setDefaultWorkdir('wkdir') as a 'convenience'.
Then all the tests are asserting that the remote commands are called with workdir='wkdir' instead of workdir='build':
    $ git grep wkdir .
    master/buildbot/test/unit/test_steps_cppcheck.py:            ExpectShell(workdir='wkdir', command=['a', '.', 'f.c', '--p', '--p'], usePTY='slave-config')
    master/buildbot/test/unit/test_steps_maxq.py:            ExpectShell(workdir='wkdir', usePTY='slave-config',


I can remove this behavior, that will make a huge patch.
    $ git grep wkdir . |wc -l
    1454