Return the response body by default if we've read it

Otherwise clients like HTTP::Simple don't return anything at all from
http requests
Move json attribs fetching to a class

* Extract duplicated code for fetching/reading JSON attributes to a
  shared class
* Use HTTP::Simple instead of Chef::REST
Move config fetching tests to their own file.
Support HTTP req to base URL without adding a slash

For single use HTTP clients, you can now do, e.g.,
  http = Chef::HTTP::Simple.new("http://opscode.com/document.txt")
  http.get
And no trailing slash is added.
Support evaluation of a string as config

This allows remote config files to be fetched to memory and evauated
without requiring an intermediate tempfile.
Load client/solo config via ConfigFetcher

* Uses Chef::HTTP::Simple rather than Chef::REST to fetch files
* Re-use error handling logic in ConfigFetcher
Use function args for error messages in config file loading
Make configuration errors more informative
Remove extra newline from error messaging
Flip config_missing? to return true when missing
Fixup specs to handle config jail feature
Merge branch 'api-code-path'

Splits all requests to webservices other than the Chef API to use a different
code path. This enables Chef to use different SSL policies for each (in a
future patch).