Support for executables outside the system default path

This PR solves the problem of using the module with tools installed outside the system path. A typical example is the PE installer which needs to invoke the 'keytool' but it's not visible as a command since it's not on the path.

However, to be able to achieve the new behavior (new optional parameter 'path' which determines where to look for executables in addition to the default system path, similar to the path in the Exec puppet resource), I needed to give up using the "commands" feature for puppet providers since the path is not known at the time when the provider is being validated.