Fix stop/start and add plist support to launchctl module.

All plists have to be read on first access as we don't know
if all the labels in a plist file match its filename. Not all
plist files are XML, some are binary, maybe even JSON. Thankfully
we have the plutil tool provided by the system for doing conversions.

Launchctl `stop` is not the same as stop on most systems. It will
kill the process, however most services will start up again as it's
very common for a service to have both `RunAtLoad` and `KeepAlive` set
in the services plist file.

Similiarly, `start` start will only start a service that has
previously been loaded without the `RunAtLoad` key in the service plist.
The man page for `launchctl` also notes that expected usage of `start`
is for debugging and testing.

These changes do not find per-user `~/Library/LaunchAgents` services
at the current time.
Corrected syntax error in include example for python-libs.

Changed

include:
  - python-libs

to

include:
  - python.python-libs
add -d to start salt in daemon mode
fixes stdout in cli environments
Merge pull request #4487 from aboe76/suse

suse init files add -d to start salt in daemon mode
Merge pull request #4482 from jasonrm/feature-launchctl-plist

Fix stop/start and add plist support to launchctl module.
Merge pull request #4486 from jameskyle/bug-doc-error-correction

Corrected syntax error in include example for python-libs.
Merge remote-tracking branch 'upstream/develop' into develop