Fix knife plugin path searching

Unreleased Chef 12.0.0 bug caught in testing where only the searching
upwards from PWD to find .chef in order to get the plugin path for knife
was busted.  The chef_config_dir was being used before load_config was
being called, so it was nil, which broke finding knife plugins.  This
was fixed by adding some lazy initialization of the config_loader object
itself and the chef_config_dir.

The reset_config_loader! is added entirely to reset the global state for unit
testing.  This whole class is a bit horrible and needs to have all its
global state removed from it, class methods removed, class ivars and the
class-variable-in-a-class-method-for-inheritance-lolwut needs to be removed.

Unfortunately, that requires some delicate surgery because Chef::Knife
gets used as a public API, and is beyond the scope of gettting Chef 12
shipped.
Merge pull request #2527 from opscode/lcg/knife-plugin-fix

fix searching upwards for knife plugins