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.

Thus far, the code for policy setup has been extracted, but the tests have not been refactored to match.