Add new interface and class for send command

Sending command job is giving up if command cannot be sent with any
reason. It means that command would be lost if Gerrit is down.

This patch adds new class and interface to raise exception if command
was not sent with errors. Also thread interrupted.
User can implement retry logic using this.
Agree. I will update this along with that proposal. Thanks!

And I will close this PR then create new ones since this change is tainted by some garbage commits.