monitoring/commands: Add `TransportException'

`TransportException' should be thrown if a command was not sent.

refs #6593
monitoring/commands: Throw `LogicException' if the remote host is not set in `RemoteCommandFile'

refs #6593
monitoring/commands: Add `CommandTransport' factory

Instead of auto-detecting which transport class to use, the instances configuration
now supports a new setting named `transport' with the possible values 'local' and 'remote'.

refs #6593