Fix "ValueError: Unknown format code 'd' for object of type 'float'" when (timeout % 60) is a float
Fix "ValueError: Unknown format code 'd' for object of type 'float'" when (duration % 60) is a float
// operator actually returns a float when applied to a float.  So need to wrap it in int()
Merge pull request #623 from ageron/develop

Fix bug in wait_for_ip: ValueError: Unknown format code 'd' for object of type 'float'
Fix bug AttributeError: type object 'SaltCloudExecutionTimeout' has no attribute '__code__'
Merge pull request #624 from ageron/develop

Fix bug AttributeError: type object 'SaltCloudExecutionTimeout' has no a...
Merge pull request #622 from s0undt3ch/develop

In case `script_env` is used, create an environ setter wrapper script instead
Fix arguments order in error.
Fix function arguments positioning.
In order to call a function for a driver, one must now use the profile name, not the driver name.

If there are multiple drivers defined under the same profile, and the driver is not specified, the user is warned and salt-cloud exits.
Some context black magic to solve some problems.

Instead of changing most of the cloud driver functions arguments to accept either the `vm_` argument or the current profile name, let's play with injecting the current profile name, which will be required, into python's `__builtin__`. As soon as done, we clear the built-ins.
Don't define extra built-ins, define module globals.

In order to use our active provider context manager, we were previously defining an extra built-in. That built-in, as all built-ins would be available to the python interpreter. We just need to define and update a module level global.
After leaving the context manager scope, the previous value is reset.
Fail soon with an improper cloud providers alias setup.
Plurals typo.
Don't squelch the exceptions.
`is_provider_configured()` can now handle driver names, provider aliases and `<alias>:<driver>`.
Both `do_function` and `do_profile` now make use of the provider context.
Log when a specific provider cannot return the listing data asked.
Add comments to why we're not using `CloudProviderContext`.
`--list-providers` does not accept arguments. Fail!