Introduce NullCharField

CharField that stores '' as None and returns None as ''
Useful when using unique=True and forms. Implies null==blank==True.

When a ModelForm with a CharField with null=True gets saved, the
field will be set to '': https://code.djangoproject.com/ticket/9590
This breaks usage with unique=True, as '' is considered equal to another
field set to ''.
Migrate AbstractProduct's UPC field to NullCharField

This will allow saving two products with empty UPC outside of
ProductForm (which had special logic to support it).

Fixes #784