Return descriptive errors from bad cookbook uploads.

:fork_and_knife: 

https://trello.com/c/2DdyWZUw/283-provide-more-details-when-a-cookbookversion-s-content-type-is-invalid

This worked before at a model level, and if the attachment itself was bad, but it failed when the `Content-Type` of the request was bad.  This fixes that.
This did not gather any errors with a cookbook which had an invalid version constraint (either for a dependency or a supported platform), which caused an exception later down the line when the errors array yielded by `finish` was empty.