No 4 byte unicode allowed in image parameters

Image create or update with params containing 4 byte unicode characters
results in 400 server error code (instead of former 500).
Image name/location/tags/properties are validated this way

Change-Id: Ib0fcf2456f0996e8235983b361d1ee5f66136375
Closes-bug: #1370954
A small refactoring of the domain

It fixes some eyesores that have been found in glance domain:
1. Removes duplicate declaration of a varariable 'name'
2. Changes type of several image transitions from 'str' to 'tuple'
3. Sets the correct default values to tags and extra_properties
4. Changes strange constructions like
self.tags = kwargs.pop('tags', None) or [] to
self.tags = kwargs.pop('tags', [])

Change-Id: I9309c7dc70b9910c6c09111f26ee489fa7ab9260
Allow some fields to be None

Container, disk format and checksum - among other fields - are not
required parameters, therfore this patch allows them to be None.

This will allow the client to have attributes with value `None` and
it'll make it consistent across responses and with regards to the API.

NOTE: A follow-up patch will enable None values to be returned by the API.

Closes-bug: #1398313

Change-Id: I75da1e9309e0f7ef8839dea3ec9c99c58edc5d63
Merge "A small refactoring of the domain"
Merge "No 4 byte unicode allowed in image parameters"
Merge "Allow some fields to be None"