Support multiple Cinder backend types

This is the first step in supporting multiple Cinder backend types at
once.  It initially converts the existing hard-coded multi-lvm support
to a new cinder_backends driver form.  Eventually the cinder_plugins
will be converted to this form so they can be enabled more than just
one at a time using CINDER_ENABLED_BACKENDS.

The default configuration should be identical to the previous defaults,
including for both True and False values of CINDER_MULTI_LVM_BACKEND.

The existing cinder_plugins are expected to be removed when this is
complete. They should continue to work until they have been converted.

Add wait for c-api to ensure it is started before continuing.

Change-Id: I93b8ef32832269d730c76a6dc24ddb4f20c6d9df
Add pre-install phase for extras.d plugins

An additional call hook for the extras.d plugins that is called before
any service installation occurs turns out to be needed by Ceph and
useful for other plugins.

This is called between the installation of the system packages listed
as prerequisites and the installation of the actual services.

Change-Id: Id723bdc7542182d2b2eff40c0dc0127307f094c5
Implement Ceph backend for Glance / Cinder / Nova

The new lib installs a full Ceph cluster. It can be managed
by the service init scripts. Ceph can also be installed in
standalone without any other components.
This implementation adds the auto-configuration for
the following services with Ceph:

* Glance
* Cinder
* Cinder backup
* Nova

Note: only works on Ubuntu Trusty, Fedora 19/20 or later.

Change-Id: Ifec850ba8e1e5263234ef428669150c76cfdb6ad
Implements: blueprint implement-ceph-backend
Signed-off-by: Sébastien Han <sebastien.han@enovance.com>
Changes to 65113 for Cinder backend

* Move lib/storage_plugins/ceph -> lib/ceph
* Move lib/cinder_plugins/ceph -> lib/cinder_backends/ceph
* Move most of the Ceph setup into new pre-install plugin phase
* Refactor Cinder config to use cinder-backends
* Move Glance, Nova, Cinder config to follow the service configuration
* Remove unnecessary changes to other DevStack files

Include leseb's fixes

Change-Id: I9c75a74f1bf08ee77487f22ad611a36cffcc2551
Merge branch 'cinder-backends' into dt-test
Merge branch 'add-pre-install' into dt-test
Merge branch 'reorder-stack.sh' into dt-test
Merge branch 'ceph' into dt-test
Merge branch 'test-ca' into dt-test
Merge branch 'usb-prereq' into dt-test
Merge branch 'conf-tempest' into dt-test
Merge branch 'test-service-functions' into dt-test
Merge branch 'exercise-refresh' into dt-test