Rewrite teuthology.orchestra.run

RemoteProcess behaves more like subprocess.Popen, with some important
differences.

A summary of the API changes:
- RemoteProcess.exitstatus is either an int or None; it is never a callable
  nor a gevent.AsyncResult.
- New method: RemoteProcess.execute()
- New method: RemoteProcess.poll()
- New method: RemoteProcess.wait()
- New attribute: RemoteProcess.returncode
- New property: RemoteProcess.finished - added because returncode can be None
  if the connection was interrupted
- run.execute() is removed.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>