Refactor the backup method of SwiftBackupService

Export functionalities of backup to 3 new methods:
prepare_backup backup_chunk and finalize_backup. The original
backup function calls those functions. This allows other
drivers to combine them in a different logic.
e.g for the RBDDriver

Change-Id: I4f335bfcd03cd1da52a9e5c5c689d97581614af6

Conflicts:
	cinder/backup/services/swift.py
Add support for swift user/key authentication

By default the swift backup service uses keystone authentication to
communicate with the swift endpoint. This patch adds three optional
parameters to allow username/key authentication

Change-Id: I54ad7d91785ade5375f317aceb80b3374b59f5fe

Conflicts:
	cinder/backup/services/swift.py
	etc/cinder/cinder.conf.sample
Use list comprehensions when possible

Replace some for loops with list comprehensions for compacting

Change-Id: Ia80a013735c595d7c4d40172b34beb18b4383ee0
Content-length missing in put_object

Radosgw returns a "411 Length Required" in case the content-length is not
specified. The parameter content_type is not set which leads to the problem
that content_length cannot be determined. Since the content length is already
computed in backup/services/swift it shouldn't be a problem to set this
parameter.

Conflicts:
	cinder/backup/services/swift.py

Change-Id: I4c56823d70fcd1a801a75bfd14f474a2780dc1ac
Added volume backup and restore to Ceph RBD driver

It is now possible to backup and restore volumes
when using volume.drivers.rbd.RBDDriver

Implements: blueprint cinder-backup-to-ceph

Change-Id: Ic1b8db8f0acd7974423414171b8fb45197d05dc6

Conflicts:
	cinder/volume/drivers/rbd.py
Added Cinder volume backup to Ceph support

Added new Ceph backup service to allow backup
of Cinder volumes to a Ceph object store. This
driver is compatible with the existing backup
interface provided by the Swift backup service.

Implements: blueprint cinder-backup-to-ceph

Change-Id: I299f033347cb263e7169c4a4efb758d19e753f46
Adding interface class for backup services

This fix introduces an interface class to define the structe of all backup services.

This commit refers to blueprint refactor-backup-service

Change-Id: Ic3fca567111f4bd1b221689c73cd5c3bab4a777b