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.
The child process was left hanging around clogging up resources until its parent process (the mcollective server process) exists.

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.