Docker: Version 0.2.1 updates

*  It was a mistake to design ``dockercmd.DockerCmd()`` as a subclass
   representing it's result.  It made extending data and behavior
   nearly impossible since state was effectively fixed at init time.
   Reworked dockercmd interfaces to support ``timeout`` and ``ignore_error``
   parameters properly w/ help from Jiří Župka <jzupka@redhat.com>.
   Simplified the interface into a base-class with sub-classes to specialize
   it to particular purposes.  This also had the consequence of
   greatly simplifying unittesting.

*  Most tests were having to run each output checker function
   on both ``stdout`` and ``stderr`` from a ``CmdResult`` instance.  It makes
   more sense to bundle this data with the output checking as
   a configurable/extensible set of behaviors.  Jiří Župka
   <jzupka@redhat.com> pointed out that the exception-raising
   nature of the checks should be optional behavior.  Moved
   the former ``output.usage_check()`` and ``crash_check()`` functions
   under a new class, ``OutputGood()``.  It takes a ``CmdResult`` as
   input, then either raises an exception or represents a ``True``/``False``
   value upon scanning ``stdin``/``stdout``.  The set of scanner/checker
   methods is configurable and easily expandable w/o changing
   the interface.

*  Added very basic unittests for ``output`` module.

*  Copy-pasted the special ``mock()`` function around in unittests.
   Bad-practice since it should go into a central module.  However,
   I already had a problem with it accidentally being visible inside
   a test, where it became a ugly, nasty, difficult to track problem.
   It needs to be de-duplicated at some point, but only if/when it can
   be done safely.  For now, it's duplicated inside all unittests and
   the documentation's ``config.py``

*  Moved version-check inside ``Subtest`` class under ``__init__``
   instead of ``initialize()``.  Formerly, it was causing failures
   during ``cleanup()`` which shouldn't even be running if there's
   a version mis-match.

*  Brought some exceptions from autotest under the ``xceptions``
   module.  This is mostly to help prevent subtest code from
   needing to import 'autotest.client.shared.error'.  It also
   makes debugging easier since we can tell where exceptions
   are coming from.

*  Re-worked the build subtest so that it is entirely self-contained
   (not requiring any external content).  This requires a static
   version of ``busybox`` is available on the system.  The benefit
   is the build-test produces much more predictable output.  It's
   also a potential technique/content for a base-level image we
   could use at some point for other testing.

*  Updated other tests to make use of new DockerCmd and output interfaces.

Signed-off-by: Chris Evich <cevich@redhat.com>
Docker: Add helpers for frequently used docker image/repository operations

The dockertest.images module defines several independent interfaces using
an abstract-base-class pattern.   They are extended through a few subclasses
to meet basic needs. There is an assumption that the full 64-character long
IDs are safer to use than the short, 12-character ones.  It is also assumed
that callers are in the best position to decide what if any 'tag' content
is used and how to mangle repo/image names.

Signed-off-by: Jiří Župka <jzupka@redhat.com>
Signed-off-by: Chris Evich <cevich@redhat.com>
Docker: Add docker cli 'image' test

Signed-off-by: Jiří Župka <jzupka@redhat.com>
Docker: Add run tests

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