buildstep.py: Add support for description{,Done}

Add support for attributes description and descriptionDone in the
BuildStep class. This means that any subclass of BuildStep will also
support these attributes as well. This was not previously the case.
buildstep.py: Remove whitespace damage
test_process_buildstep: Add test for new describe()

Add test for the new functionality of the describe() method in
buildstep.BuildStep.
test_steps_master: Update tests to work with describe()

The altered tests did not work with the new functionality of the
describe() method in buildstep.BuildStep. They explicitly looked for
the name of the BuildStep when querying the status text of a
successful BuildStep, even if said BuildStep had its description-
attributes set. This commit fixes that behavior.
buildstep.py & shell.py: Extract common attributes to superclass

The attributes `description`, `descriptionDone` and
`descriptionSuffix` in the class `ShellCommand` have been moved to its
superclass `BuildStep`. The test for the `describe()` method that uses
these attributes has also been updated.
buildstep.py & shell.py: Moved descriptionSuffix logic

Moved descriptionSuffix logic from shell.ShellCommand to
buildstep.BuildStep
test_process_buildstep: Updated tests for descriptionSuffix
locally disable pylint no-value-for-parameter check

The test
test_process_properties.TestProperties.test_setProperty_no_source
generates a pylint error. Disable that check locally.
enable no-value-for-parameter (E1120) pylint check
Moved mtrlogobserver module to buildbot.steps.mtrlogobserver

Renamed buildbot.process.mtrlogobserver module to
buildbot.steps.mtrlogobserver. The mtrlogobserver.MTR is a step,
so having it under buildbot.steps make more sense.
added unit tests on mtrlogobserver.EqConnectionPool class
buildbot.status.mail: improve email address regexp

The previous email regexp contained some flaws; the intentions
of the regexp and the implemention had some gaps that would make it
hard to rely on.

This rewrite should match any valid email address, but it does not
give any guarantees that what it matches is a valid address. An
increased level of complexity is (hopefully) compensated by a comment
explaining the reasoning behind the regexp. This is accompanied by
unit tests; you are encouraged to add any corner case addresses in
either the test for valid or invalid addresses.
enable bad-except-order (E0701) pylint check
export correct function from buildbot.util

The commit b4fb9fbf2243db6d091202f58ced453483fecd29 introduced
buildbot.util.diffSets() function, however it was listed as
'diffLists' in the __all__ list. Use correct name.
remove non-existent symbol from __all__

The buildbot.util.LRUCache class have been removed in
a389b086e65ac8107ae6fdd288dc51a9854a992c commit. Remove it from __all__
list as well.
enable undefined-all-variable (E0603) pylint check
Introducing adapter for PB
based on https://github.com/djmitche/buildbot/tree/amp
doKeepalive and shutdown moved to protocol level
minor fixes in test and getSlaveInfo
shutdown in old way moved to Protocol
Old and new ways moved under Protocol