Separate API and non-API HTTP request code paths

This is a prerequisite for providing API vs. non-API SSL validation as separate configuration options. Summary:

* `remote_file` and `http_request` resources use `Chef::HTTP::Simple` HTTP client instead of `Chef::REST` (which is now only used for API requests).
* Code to support loading node JSON and config files from remote sources has been extracted to a new `ConfigFetcher` class, which also uses `Chef::HTTP::Simple` for HTTP communication.
* I threw in a small improvement to config file error messaging. In my manual testing I noticed it was pretty vague. It now includes a filtered backtrace so you can see the source of the error (but doesn't show chef internal code in the trace. A simple example:
```
$ bundle ex bin/chef-client -c /tmp/badconfig.rb
[2013-10-14T17:44:47-07:00] FATAL: Configuration error RuntimeError: oops
[2013-10-14T17:44:47-07:00] FATAL:   /tmp/badconfig.rb:2:in `from_string'
[2013-10-14T17:44:47-07:00] FATAL: Aborting due to error in '/tmp/badconfig.rb'
```