[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)
Rename so RSpec will pick the file up and run the tests
Add test to verify "auto-inflation" of JSON into Ruby classes
Add a dummy Chef::Sandbox class back in

This allows Chef 11 clients to interact with Chef 10 servers (specifically, to upload cookbooks) without crashing.
[CHEF-3556] make knife search less strict about input

1. if no type is specified, node is assumed
2. if the search query doesn't contain a colon character, a "fuzzy"
  search (from knife grep) is used.
[CHEF-3643] ensure Chef::REST can be required without loading Chef

Currently some non-Chef applications depend on the Chef gem as a library.
In particular `chef-server-webui` leverages the Chef::REST to make 
requests to Erchef.  We need to ensure Chef::REST can be required 
without forcing an application to load the whole Chef bowl.

In particular this commit:

* Ensures `Chef::Provider` is required in `Chef::REST` before trying to 
  access it.
* Stops the circular dependencies in `Chef::Provider::User` and 
  `Chef::Provider::Group` when they are required in `Chef::Platform`.
Merge branch 'OC-5215'
Fix 'knife cookbook upload --all'

Cookbooks could be uploaded individually, but attempting to load all at once was resulting in the following error against Chef 11 servers:

ERROR: The data in your request was invalid
Response: Field 'checksums' invalid

The immediate cause of this message is that knife was trying to create a sandbox with no files, which we explicitly forbid on Chef 11.

The ultimate cause of this was introduced on August 14, 2012 with commit 70c019f3.  It appears this was an incomplete refactoring of the CookbookLoader class.  Before the refactoring, a cookbook loader would load its cookbooks lazily in each method that needed them.  The refactoring made this explicit, but an explicit call was not added to the knife cookbook upload command.

This addresses CHEF-3638.
Merge branch 'cm/OC-3638'
[CHEF-3376] Update fixture cookbooks for run_context tests
[CHEF-3376] Load all filetypes in run_list order

* Extract file loading for non-recipe types to implementation class.
* Load libraries, LWRPs, Resource Definitions in approximate run_list
  order
* Should not be a breaking change on chef-client, since the order is
  essentially random right now. On chef-solo, files from cookbooks that
  don't appear in the expanded run_list plus dependency graph will not
  be loaded, which is a change from the previous behavior.
[CHEF-3376] extract CookbookCompiler specs
[CHEF-3376] give CookbookCompiler its own file
[CHEF-3376] make CookbookCompiler take a RunContext

The circular reference is not ideal, but it allows for complete
extraction of all cookbook compilation into CookbookCompiler.
[CHEF-3376] move recipe compilation to CookbookCompiler
[CHEF-3376] rdoc more methods, reorganize
[CHEF-3376] remove redundant attr_accessor
[CHEF-3376] fix doc typo
[CHEF-3376] fix incorrect doc, add more docs

* fix incorrect statement in CookbookCompiler docs
* Add lots of doc to RunContext
[CHEF-3376] Add debug logging for compile order

Ex:
  DEBUG: Cookbooks to compile: ["dependency1", "dependency2",
  "test-with-deps"]