Reuse SSH connections for executing multiple commands.

When using SSH client to execute a command a Paramiko
client is created, it is connected to server and then the
client reference is forgot without closing socket.

This produces a leak of SSH connections. It also slow
down test executions when more than one command has to
be executed with the same SSH client (for example when
executing ping between VMs).

This change also add convenience methods to SSH client:

- connect() method allows to create and connect Paramiko
  client to be used by tests directly (for exaple to open
  a command like socat, cat, nc and redirect STDIN/STDOUT
  to generate or receive network traffic. The method is
  going to return the same Paramiko client instance
  until close() method is called.

- close() method allows to close paramiko client socket and
  release resources.

- execute_script() spawn a script interpreter (Bash by default) on
  a remote machinge to execute a script provided as a string.
  For convenience by default it combines STDOUT and STDERR to LOG
  an human friendly message when the script fails.

Change-Id: I3a70131f03aea342c8e8a04038000bd974cca921
diff --git a/requirements.txt b/requirements.txt
index e48daf7..dc77e63 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -10,6 +10,7 @@
 oslo.log>=3.36.0 # Apache-2.0
 oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
 oslo.utils>=3.33.0 # Apache-2.0
+paramiko>=2.0.0 # LGPLv2.1+
 six>=1.10.0 # MIT
 tempest>=17.1.0 # Apache-2.0
 ddt>=1.0.1 # MIT