cyclades: Add VolumeType DB model

Create new 'VolumeType' database model to represent the available types
for Cyclades Volumes. Currently, this model contains only the volume's
disk template and the human-readable name, but can be extended
to include extra specs, e.g. QoS specs.

The 'disk_template' column from the 'Flavor' and 'Volume' models is
replaced with a foreign key to the 'VolumeType' model.
cyclades: Replace disk template with volume types

Replace usage of the stale 'disk_template' attribute of flavors and
volumes with the newly introduced volume type.
cyclades: Add volume type to flavor fixtures

Update flavor fixtures to create a volume type, and use this volume type
instead of the disk template.
cyclades: Management commands for volume types

Create 'snf-manage' commands to handle volumes types. This commit adds
the following commands:

* volume-type-create
* volume-type-list
* volume-type-show
* volume-type-modify

Also, update 'volume-create' command to take as option the volume's
type.
deploy: volume-type-create before flavor-create

Move flavor-create command from initialize() phase to admin_post().
Because flavor-create needs a volume type id, for all names and
templates found in conf file, create a volume type, then find its
id and then create the corresponding flavor.

Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
cyclades: Create '/volume/types' API

Create the API endpoint to list and show information about existing
volume types. Also, update the view to create a new volume to use the
'volume_type' attribute.
docs: Update admin guide about volume types
cyclades: Check volumes' type when creating server

When creating a server and attaching existing volumes, check that the
volume type of all volumes and of the server's flavor match.
snf_django: Add default value to util method

Extend the 'get_attribute' method with a default value to return, in
case a non-required attribute is missing.
cyclades: Fix volume urls trailing slash

Make trailing slash in the urls of the volume app to be
optional.
cyclades: Various fixes to volume views

Fix a number of views in the volume views. Also use the 'get_attribute'
helper function to parse the request body.
cyclades: Extend volume API with metadata methods

Extend API of 'volume' app with endpoints for handling metadata of
volumes and snapshots:

Volumes:

* GET /volumes/<vol_id>/metadata: Show volume's metadata
* POST /volumes/<vol_id>/metadata: Update volume's metadata
* PUT /volumes/<vol_id>/metadata: Replace volume's metadata
* DELETE /volumes/<vol_id>/metadata/<meta_key>: Delete volume's metadata
                                                item

Snapshots:

* GET /snapshots/<vol_id>/metadata: Show snapshot's metadata
* POST /snapshots/<vol_id>/metadata: Update snapshot's metadata
* PUT /snapshots/<vol_id>/metadata: Replace snapshot's metadata
* DELETE /snapshots/<vol_id>/metadata/<meta_key>: Delete snapshot's metadata
                                                  item
cyclades: Add unittests for volumes API