dockertest.dockercmd: cmdresult property

Hide the underlying behavior of execute() by trying to
returning a fresh cmdresult value when possible, instead
of possibly a reference.  Do the same thing for __str__
so that the most current, detailed info is always available.

For the AsyncDockerCmd class, make the cmdresult attribute
into a property that always contains current stdout/stderr and
exit_status.  Deprecated update_result() method since it's now
covered by cmdresult property.  Updated unittests to match changes.

Add new sub/sub-subtest methods ``log_xn()`` to facilitate printing
multi-line messages where look-n-feel are important.  i.e. allow
debug output to go out w/o any further mangling.

Signed-off-by: Chris Evich <cevich@redhat.com>
dockertest.subtest: Combine common elements

Several dockertest modules would benefit from access to a
standardized interface for common-elements between the
Subtest and SubSubtest classes.  Combine those elements
in a new ``SubBase`` class.

Use multi-inheritance to guarantee the ``autotest.client``
test.test class interface is preserved.  With this change,
anything formerly accessing a ``Subtest`` instance for it's
``config`` and ``log*()`` methods, can now depend on
the ``Subbase`` interface being provided for
sub-subtests also.
dockertest.dockercmd: Accept SubBase instances

Allows DockerCmdBase subclasses to work with both
subtests and sub-subtests via the common SubBase
interface.  This helps keep debug/logging messages
at the right level of indentation, making it easier
to tell where various commands came from.

Signed-off-by: Chris Evich <cevich@redhat.com>
subtests...various: Pass sub-subtest to DockerCmd

Helps execution log messages appear next to the right
sub-subtest name prefix.

Signed-off-by: Chris Evich <cevich@redhat.com>