Grains caching layer

* Creates a new flag for salt-call called '--skip-grains' that will completely bypass the grains loader. (Mostly for testing. Will break many modules in practice!)

* Creates a new flag for salt-call called '--refresh-grains-cache'. This forces a refresh of the grains cache on a minion.

* Adds a new minion config option called 'grains_cache'. Defaults to False.

* Adds a new minion config options called 'grains_cache_expiration'. Specifies the number of seconds allowable for before a minion grain cache is declared to be stale.

* Correct a potential syntax error in the minion config variable, 'grains_refresh_every'.

* Modify the 'apt' module so that it does not stack-trace in virtual() if grains aren't loaded.

* A new caching layer for the grains loader that can write to and read from a msgpack'd serialized data file containing grains that is stored in the minion cache.
SmartOS Esky Packaging: Fix PATH for services

We ran into some weird issues with these SMF manifests
with certain critical binaries not being found in the PATH.

This PATH is derived from root's default PATH when logging
in to a SmartOS zone.
Added ``python`` Jinja filter to jinja renderer docs
Prevent the file.serialize python formatter from outputting OrderedDict
SmartOS esky packaging: minor fixup

Don't assume that the top directory is named "salt"
The user might choose to name it "salt-<version>"
or "saltstack" or whatever else.

install.sh is already that flexible; this fixes _syspaths.py
Strip out the json unicode from file serializations
Fixes issues w/ starting broken services
Improve efficiency of event.fire_master

event.fire_master was doing an authentication handshake on
every event.  When firing events for monitoring-type applications
across many serversthis is a noticable amount of extra work for the
master.

This change sends events via the local minion event bus to the main
minion process, and from there up to the master using the existing
crypticle instance.
Simple state profiler

Log the entry timestamp and exit timestamp of each low chunk in a state run. Refs #7694.