Tweaks to stock record validation and display

* Dashboard product list now shows a - instead of 0 for parent products
  (which can't have stock records)
* Product.has_stockrecords now uses the quicker exists() query
* The docstring for validation was wrong
Validate categories for child products

Child products can't have categories assigned. This commit adds
validation for that.
Subtle tweaks to attribute summary handling

* Rewritten attribute_summary() for readability
* The unicode representation of a product now only includes the summary
  if a title is not set
* We use the customer-facing "variant" naming instead of "child product"
Add validation rules for options on child products

As child products options are handled on the parents product page, we
can't allow per-product options on child products.

Personally, I think per-product options are confusing anyway; IMHO it
should only be handled by the product class, as is done for product
attributes. But that will be addressed after checking with
@codeinthehole.