Enable to virt.init on an ESX host

WARNING: This is currently untested on a KVM/QEMU host, so this might
very well introduce a regression. Please review.
Make the profiles fall back to defaults based on active hypervisor
Make virt.init return backwards compatible

Though I think virt.init should return True or False.
Keep it DRY
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.
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.
`SaltInvocationError` now also subclasses `TypeError`.
Improved logging messages formatting.
Error signatures changed, lets update test cases.
Improve `format_call` keyword arguments passing.

Pass keyword arguments as keyword arguments, not as arguments.
Add unit tests to `salt.utils.format_call()`.
Created `format_call_defaults()` as a helper to `format_call` and a future decorator.
Symlink support in file.recurse
Added some more documentation to fileserver_followsymlinks
Merge remote-tracking branch 'upstream/develop' into develop