Greedy/non-greedy minion matching

See https://github.com/saltstack/salt/issues/15673#issuecomment-58235569
for a full discussion of this issue.

Refs #15673
Lint fixes
First attempt at caching the loaded configuration from the filesystem.

This basically should avoid loading and parsing YAML over and over again.
Handle more config filenames
The `syndic_config` call needs the path to the minion config file
Try caching the client too
Remove duplicate import
Allow getting the configuration from scratch.

Properly handle `client_config` when loading from cache.
Only delete the `_client` attribute if it has been set.
Remove the unnecessary `integration.ClientCase` class
Test the runner client under `tests/integration/clients`
Move tests away from `__init__`
Removed `--runner` because it's integrated in the client tests
Let's go wild and cache the local client as reusable a runtime global instance
Use the salttesting skip helpers
Don't add tests in `__init__`
The runtime client gets an unfreeze version of the configs
Load configs from scratch
Fix lint errors
Fix exception found in integration tests
Fix bug in matcher logic for non-greedy grains matches