CHEF-3404: Provider Resolver

Implements lazy evaluation of which chef provider to use based on evaluating the system.  Lets the the service resource select its provider based on interrogating the system rather than assigning a single default provider per distro.  Providers encapsulate their own logic for determining which resources they support.
Everything with handle sysv init scripts.  So on a system you may have vanilla Service::Init handling it, you might have Service::RedHat that can handle it, or you might have Upstart+Invokercd+Debian providers that can handle it, and then if you've installed systemd (which is option) you may have that as well.   So you'll get an array back and we have to knock out providers and pick one of them somehow.

Also, there's the case where nothing works and we still need to return a default provider to handle why-run messaging (the provider_resolver itself cannot spit out "cant find /etc/init.d/foobar, assuming some other resource installed it" so we have to guess something).

It works and meets the requirements, but I'm still not super happy with that one.