Fix cross-calling provider overrides

Provider overrides were being applied after __salt__ was added to each
minion module, causing minion overrides to be available on the CLI but
not within __salt__. This commit moves the processing of provider
overrides to within gen_functions, so that they happen before __salt__
is created and thus contain the module overrides.
Merge pull request #7387 from terminalmage/loader_fix

Fix cross-calling provider overrides
State calls now fail if non-supported arguments are used. Fixes #6962.

* Removed `format_call` from `salt.state.State` since it was almost a one to one copy of `salt.utils.format_call`.
* The `format_call` in `salt.utils` was modified to accept initial return data(to provide the functionality from the removed `State.format_call`.
* While the function arguments are being queried/matched, those used are removed from a copy of the passed data. Once finished, any remaining keyword arguments which do not match those allowed on the `expected_extra_kws` keyword argument to `format_call` will raise a `SaltInvocationError`.

This will prevent any future bogus bug searching like what happened on #6912 because the wrong state function argument was being passed.
Updated docstring. Double to single quotes.
Lost a `copy()` in a rebase.
Instead of failing, let's return warnings to the user to know what's going on.
Use `salt.utils.is_windows()`.
Formatting, Coding Style and PEP-8.
Use the already existing `context` keyword.
`salt.utils.decorators` is now a package.