Avoid hiding error context in VCS pip install.

When an error happens while trying to install a pip package from a VCS, like
git, if there's an '=' in the name, the error handling logic tried to be
clever and give a better error message, but that logic doesn't apply to VCS
names, which can legitimately have a single equal sign. So, in that case
report the original error message.
Fix bug preventing minions from unloading custom modules.

This change no longer blindly updates the __salt__ dict for each module upon module refresh but instead rebuilds the dictionary from scratch. Refs #7691.
Add a test case to check for proper env selection when passing `?env=foo`. Refs #8196.
Correctly trigger the issue reported on #8196.
Forgot to add the top file.
Add required state file.
Log the env in use.
Set the proper `__env__` as a function global when calling the state function. Fixes #8196.

To achieve this we're making use of python's `with` context managers.
Initially we check if the user is passing `env` from his state definition. If he his, then that's the `env` to use for as long as the state function is being executed. Passing `env` is also being deprecated, the users should use the more meaningful and unique `__env_`.
If the user passed `__env__` in his state definition, that's the `env` to use, or, if no specific environment is being selected on the users state definition, then the default one, `base` is what will be used.

This change makes it so that **any state module function** does not have to accept `__env__` as a keyword argument.
Accepting `__env__` as a keyword argument is no longer required or aceptable
Accepting `__env__` as a keyword argument is no longer required or aceptable
Accepting `__env__` as a keyword argument is no longer required or aceptable
Accepting `__env__` as a keyword argument is no longer required or aceptable
Deprecated `env` as a keyword argument since `__env__` is now available within the function's global scope.
Deprecated `env` as a keyword argument since `__env__` is now available within the function's global scope.
Accepting `__env__` as a keyword argument is no longer required or aceptable
Updated test cases to include environment selection in states using `__env__`.
Include the `holy` directory for the `__env__` selection test cases.
State unit tests need to have an hardcoded `__env__`.
Withing the module, `__env__` is known.
The salt `pip` module no longer accepts `__env__` as `kwargs`.

It simply knows that from it's global scope.