Extract policy building concerns from Chef::Client

Chef::Client has too many responsibilities that are difficult to test in
isolation. Refactor them out to an implementation class. This is a
prerequsite for providing alternative policy building strategies.

I extracted the behavior for:

* `load_node`
* `build_node`
* `setup_run_context`

By changing the behavior of these methods with an alternative implementation, we should be able to implement a prototype version of the policy-lock behavior we have planned for the workflow update.

I also added a completely new test suite. I have not removed/modified the old tests, but now that we slightly better tests in the `PolicyBuilder` suite, we could stub out some of the tests in the `Chef::Client` suite to make them less prone to frivolous failures.