Rewrite teuthology.orchestra.run

A summary of the API changes:
- RemoteProcess.exitstatus is either an int or None; it is never a callable
  nor a gevent.AsyncResult.
- RemoteProcess has a few features to make it behave similarly to
  subprocess.Popen:
    - wait(), poll(), returncode (alias to exitstatus)
   - Also has 'finished', because returncode can be None if the connection
     was interrupted

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