Spec out high level behaviors for cookbook change detection

So far this is just a bunch of unimplemented tests describing the desired behavior. Agree with these? Am I missing any important cases? @opscode/client-engineers 
* Validation is done before uploading. We haven't fully designed how chef-zero will provide a "hack" mode for Policyfiles; one way it could work is that chef-zero runs the validation when chef-client requests the policyfile. But that's for a later discussion.
* For now, the plan is that the `compile` command will just nuke your `Policyfile.lock.json` and start over from scratch. Eventually we'll have to implement selective updating (like `bundle update`) but that's a decent sized chunk of work.
* git-sourced cookbooks are stored in the cache and will be treated the same as cookbooks from supermarket. Only the `pristine` function (see below) will be different.
* Checking the `Policyfle.rb` for changes is a neat idea, but I'm going to ignore it for now.