Refactor to support an Exec backend in addition to Ssh

This is a little refactoring which adds the `ExecHelper` and allows users to choose whether they want to use the SSH helper or the Exec helper when they create their spec. The Exec helper is currently the code I'm using in `puppet-spec`.