22114 - Add a timeout option for system commands

This commit adds a timeout option to `MCollective::Shell.new` and
`MCollective::RPC::Agent.run`.

Previously in case of a stuck child process the systemu guardian thread
was just waiting on the childpid forever, even after the executing agent
reached its timeout. It is now possible to use the timeout parameter to
force termination of the chilld proccess.

The timeout can be specifier in seconds or if the symbol :on_thread_exit
is given, the child process is killed when the executing parent thread exits.