virt: aexpect support parallel unittesting

* Allow server's BASE_DIR to be set by caller.
  (allows sequestration of unittest test data)

* Allow Spawn class to alter server's
  BASE_DIR (supports unittesting)

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: aexpect code cleanup

* aexpect should timeout instead of busy-wait
* aexpect should log server activity
* Make server reader & buffer handling match client
* Remove empty string from reader list
* Move aexpect server code into a function
* Move file cleanup into client close() method
virt: fix aexpect bug server inheriting client fds

On the line prior, the client uses _lock() which opens
a file descriptor.  The server was inheriting this open
fd via the subprocess.POpen() call.

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: Fix aexpect bug client loosing stdin/out fds

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: Add aexpect unittests

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: aexpect be obvious when not using fds

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: Move aexpect.Tail tail_thread attribute def

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: aexpect server should log exceptions

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: more aexpect unittests

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: aexpect needn't only reference fd integers

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: aexpect should validate parameters

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