properly distinguish between 'warning' and 'critical' cases

This patch enables you to distinguish between services that are in a maintenance state (critical) from other states that are either OK or produce a warning (the offline state is an example).

As it was, the check would give a false positive for a temporarily disabled service (svcadm disable -t).  This proved to be vexing because the default SmartOS global zone has a service (acpihpd) that would temporarily disable itself if not used, but would be enabled on boot to check if it should be.

Additionally, I've included a hint to the solution if 'svcs' doesn't return successfully.

\- Dimitri