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.