[CHEF-3619] fix obsolete require of 'rake/rdoctask'

'rake/doctask' has been deprecated for quite a while but since version
10.0.0, rake no longer simply warns, and now fails with a cryptic
error:

$ rake -T
rake aborted!
GONE
/home/adam/chef/Rakefile:24:in `require'
/home/adam/chef/Rakefile:24:in `<top (required)>'
/home/adam/.rvm/gems/ruby-1.9.3-p194@chef/bin/ruby_noexec_wrapper:14:in `eval'
/home/adam/.rvm/gems/ruby-1.9.3-p194@chef/bin/ruby_noexec_wrapper:14:in `<main>'
(See full trace by running task with --trace)
CHEF-3555: Fix unit tests on windows

I was worried about using @install_path because of its distance from this test;
if someone change it to an array, it would defeat the purpose of the test.
Alternately, I could have duplicated the short block that sets @install_path
based on platform, but for the sake of simplicity just took the provided
@install_path from the before block.
Restructure index_rebuild to facilitate testing

Essentially spilt functionality out into several methods, and simplify logic.

API information retrieval is now a discrete step.  Testing for a unsupported version now relies solely on the presence of version information, since only Chef 11 has this information, and only Chef 11 has the alternative reindexing strategy.	  Warning messages are handled by their own methods.
Total rewrite of knife index rebuild tests
Use ui error, warn, and info messages instead of puts
Use ui.confirm in nag instead of custom logic

Removed tests for #nag, since now that amounts to testing ui.confirm.
Further cleanup of #nag
[CHEF-3663] Search for .chef in ENV[PWD] if set

Prefer ENV["PWD"] for current working dir, but fall back to Dir.pwd if
not set. Fixes config path searching when part of the path hierarchy is
a symlinked directory.
Merge branch 'CHEF-3663'
Quote cookbook name/version in error message

User was getting an error message:
> ERROR: Cookbook git depends on cookbook runit, version >= 0.0.0,
Issue was the metadata for git had a dependency on 'runit,'. Should
probably also add validation to metadata depends for cookbook names, but
generally quoting user-supplied values in error messages makes this kind
of issue more obvious, so this should be a worthwhile quick fix.
Merge branch 'highlight-cb-names-in-err-msg'
Fixes CHEF-3639: 'knife index rebuild' no longer works with Chef Server 11
[CHEF-3662] ApiClient can reregister itself
[CHEF-3662] fix spec for ruby 1.8.7

Can only expect exception class, not an instance.
Merge pull request #489 from aspiers/CHEF-3619

[CHEF-3619] fix obsolete require of 'rake/rdoctask'
[CHEF-3680] Specify file and line for eval
[CHEF-3680] #merge isn't destructive, #merge! is
[CHEF-3680] don't invalidate computed attributes on dup
Merge branch 'CHEF-3680'
[CHEF-3662] ApiClient can set a private key from JSON

Without this change it's not possible to fix CHEF-3662 on the client
without modifying Chef::REST to ignore json_class. Previously the
behavior was explicitly defined to be the opposite, but the reasoning
behind this decision wasn't documented; I suspect it may have been for
server-side behavior that's no longer necessary.