[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
I assumed this is the meaning of

            if callable(self.build.workdir):
                return self.build.workdir(self.build.sources)

but I admit I haven't verified this assumption