Add validation of Policyfile.lock data structures when ingesting

Ensures that required data is present when ingesting lockfile data structures. This is intended to ensure that, should a user modify a lockfile directly (which isn't going to be supported but will happen anyway), we catch any obvious issues up-front so we don't end up with type errors/NoMethodError on nil, etc. I think any inconsistencies in the data should be caught by a subsequent step, where we validate that cookbooks are present and any modifications haven't violated dependency constraints. If there are other bad cases, we probably just need to address them as they are found.

/cc @opscode/client-engineers