Detect Cookbook Changes and enable auto-updating of the Policyfile.lock.json

Implements the ability for a lockfile to "refresh" itself, and update the content hash of any local (i.e., "dev mode") cookbooks that have been updated. Cached cookbooks (which are expected to be unmodified copies of the upstream) are not allowed to be modified.

After refreshing the content hash, we also refresh the dependency data and verify it's consistent with constraints of other cookbooks in the lockfile. To support this process, the dependencies of all of the cookbooks in the Policyfile's working set are stored in the lockfile.