First pass at an automated check in the minion tune-in loop, using a threaded approach to periodically refresh the master if the grains on a minion have changed.
Re-write to use Scheduler instead of threads.
Updated the 0.17.0 docs to link over to halite, and clear up that it is not included with salt-master. Created a new halite tutorial that talks about how to set up halite, this is still incomplete for the amount of info I would like in it.
Update state.py

https://github.com/saltstack/salt/issues/7991
Add a lexical parser for MySQL grants to the MySQL module. Change the behavior of the grant-checker to use this new method by default and fallback to the strict method if it fails.
Generate jid in _wait in state module if not specified (can happen when called in the mine with queue=True)
Update state.py

https://github.com/saltstack/salt/pull/7992#issuecomment-26747276
if->elif per @s0undt3ch
Realized that the lexical grant parser doesn't handle multi-word statements. Corrected for this condition.
Minor code reformat.
Added check about empty string
Merge pull request #8011 from malinoff/fix-no-output

Fix printing newline if there is nothing to print
Merge pull request #7992 from puluto/develop

Update state.py
Adding close process and service stop to windows installer
Pass cmd as list, not string, to subprocess.Popen. Otherwise, packages installed from files will fail with: OSError: [Errno 2] No such file or directory
Merge pull request #8003 from cloudflare/fix-state-__pub_jid-keyerror

Generate jid in _wait in state module if not specified
Merge pull request #7971 from cachedout/grains_refresh_every

Grains refresh every
hard default grains refresh to be disabled
Merge pull request #8002 from cachedout/mysql_grant_parser

Add a lexical parser for MySQL grants to the MySQL module. Change the be...
modified to a list according to Pedro Algarvio's request