Make pkg.installed state multiple-version aware

This commit uses the "versions_as_list" kwarg that was recently added,
so that version specification works as expected for instances where more
than one version of a package is installed.

This fixes #2783.
Set osrelease grain on Solaris hosts

This fixes #4321.
Merge pull request #4420 from terminalmage/issue4321

Set osrelease grain on Solaris hosts
Add docs on installing w/easy_install
Merge pull request #4421 from terminalmage/docs

Add docs on installing w/easy_install
Fix #4417

This adresses the root of the problem, and ensures that the single
locaded module keeps the same context, shared with the standard
loaded modules
Merge pull request #4419 from terminalmage/issue2783

Make pkg.installed state multiple-version aware
Start work on #4405

This commit adds the errors to the pillar. The next step is to have
state runs fail if errors are found in the pillar.
Fix #4405

Now states will not run if errors are detected in the pillar.
This is a module layer abstraction and is not managed in the
compiler, meaning that anyone writing higher layer access to states
need to run this check manually.

The check can be bypassed via the force=True option for the
state.highstate, state.sls and state.top functions
Fix #4323

Add a try/except block around cache lookup since the cachedir might not be there
Add check for changes to be a dict, still need to track down

the vialating state
Fix #4202

If pkg.install returns a string append it to the comment and make
sure changes is a dict
guess id from ip
fix #4429
Merge pull request #4431 from giantlock/develop

fix #4429
Merge pull request #4422 from ahammond/guess_id_from_ip

guess id from ip
Strip out ec2 specific calls pending a better more generic solution
add logging messages for id guessing
Fix #4427
fix backtrace when environment empty