Return the jid as well in the RunnerClient.async() return
Add cmd_sync and cmd_async methods to RunnerClient()
Document new cmd_sync, cmd_async RunnerClient methods

Also de-emphasize the direct master_call method. Since master_call is
inconsistent between RunnerClient and WheelClient we should instead
present a single, consistent interface.
Added two mixin classes, copied from RunnerClient, for executing funcs
Refactored RunnerClient to use sync/async mixin classes
Added a cmd_sync method to WheelClient

This matches the behavior and semantics of the RunnerClient() method of
the same name.
Refactored WheelClient() to use sync/async mixin classes
Added function to execute WheelClient() functions asynchronously
Added cmd_sync, cmd_async methods to WheelClient docs
Renamed call_func to cmd for consistency; made compat alias

Added WheelClient() documentation on the non-eauth cmd & async funcs.
Add 'auto' eauth backend for tests
Move eauth_creds to class-level for reuse
Add tests for the cmd_sync and cmd_async RunnerClient methods
Add runner_async and wheel_async clients to NetapiClient

Also switch from master_call to new public-facing methods.
Added NetapiClient integration tests
Switch NetapiClient to use client_config instead of master_config

We access the Salt master through client interfaces and should use the
correct config when doing so. We should also reuse the already-loaded
opts when instantiating LocalClient().
Use WheelClient instead of the deprecated Wheel
Added timeouts to the Runner/Wheel sync calls
Merge pull request #14268 from whiteinge/salt-runner-sync-async

Add sync/async Runner calls & sync/async Wheel calls that all respect eauth