Handle Host Commander and WinRM actor crashes better

Host Commander

There are some edge cases in the `execute` and `connector_for` methods that raise errors and crash the HostCommandor itself. The changes below are meant to mitigate that behavior.

* Instead of all sorts of raising of errors in HostCommander, just return nil out of `connector_for`
  * Then, when `connector_for` returns nil, return an error `HostConnector::Response` object.
  * Or send the method deeper in.

WinRM Actor

I found some differences here from how we handle errors mid-run in the SSH actor. Also noticed a bug.

* Add more rescue handling for things like `SocketError, Errno::EHOSTUNREACH, Errno::ECONNREFUSED` which can occur mid-run or after a connector has been given (imagine unplugging a box right after we decided we could connect to it on a given port in HostCommander)
* A bug in the logic meant `CommandUploader.new(connection)` was reaching out to boxes, even when we didn't need that object anyway (commands were less than the character limit or the flag was not present).
  * Refactor (remove) `get_command` and simplify that logic into `run`.