Add "available" functions to service providers

These functions make service states more reliable, and and fix edge
cases when a provider override is used and the the overriding provider
doesn't have an available function (and this falls back to using the
default one from the detected service module).
Fix reporting for service.dead states

service.dead states for which the "enable" param is not set to True or
False, if a service is stopped as a result of running the state, did not
have anything in the changes dict, and also had an empty comment field.
This commit improves those reporting deficiencies.

In addition, the helper function _available() in salt/states/service.py
has been modified slightly. There is no reason to add a key to the
return dict, then pop it off after running _available(). This has been
changed so that _available() returns True/False, and the refs to this
function have been changed to not pop the now-nonexistant key from the
return dict.
Merge pull request #7495 from terminalmage/issue7361

Service state fixes