Add validation for all Product fields.

This doesn't match what's in the tutorial exactly. I reformatted the
validation to address each field individually, in order. This way, the
validation error messages always appear in the order of the fields on
the page. I'd call that a best practice.
Add validating test data to products test.
Merge branch 'validate_products' into develop