Initial specification of policyfile builder

:construction: This is nowhere near done

So far this just shows one expected input and output for a policyfile.lock builder. Some thoughts/questions that have come up so far:

* There is a local cache for remote cookbooks. The remote cookbooks are expected to not be modified, so that their content checksum and metadata can be trusted.
* cookbooks on the local filesystem (outside of the local cache) are assumed to be "volatile" and metadata will need to be re-checked for each operation. This implies that we may auto-update the lock file on access in some situations (but we can figure what the limitation on this are when we implement the rest of the 
* There is a "git repo discovery" feature that mines data about local git repos for "dev" cookbooks.
* In the future we'll probably need to store the dependency graph inside the lock file to optimize operations like updates. I'll leave that for later because chef-client won't care, it just needs the versions.