Wraps a runspace and protects the invoke method from being called on multiple threads through blocking.
Calls to Invoke on this object will block if the runspace is already busy. Calls to InvokeAsync will also block until the runspace is free. However, it will not block while the pipeline is actually running.