Refactor rpc backend configuration logic

This commit also changes the following:
- Fixes Nova QPID module path
- Fixes a bug Cinder ZeroMQ RPC points to nova module
- Adds ZeroMQ setting for Heat RPC

qpid_is_supported is moved from functions to lib/rpc_backend.

This work is based on the work by Isaku Yamahata <yamahata@valinux.co.jp>
in https://review.openstack.org/#/c/19074/.

Change-Id: I45e21b1fb85e539213f5243764132a37906d7455
diff --git a/lib/cinder b/lib/cinder
index d9f8d63..8b1ccd7 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -184,14 +184,7 @@
         iniset $CINDER_CONF DEFAULT use_syslog True
     fi
 
-    if is_service_enabled qpid ; then
-        iniset $CINDER_CONF DEFAULT rpc_backend cinder.openstack.common.rpc.impl_qpid
-    elif is_service_enabled zeromq; then
-        iniset $CINDER_CONF DEFAULT rpc_backend nova.openstack.common.rpc.impl_zmq
-    elif [ -n "$RABBIT_HOST" ] &&  [ -n "$RABBIT_PASSWORD" ]; then
-        iniset $CINDER_CONF DEFAULT rabbit_host $RABBIT_HOST
-        iniset $CINDER_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
-    fi
+    iniset_rpc_backend cinder $CINDER_CONF DEFAULT
 
     if [[ "$CINDER_SECURE_DELETE" == "False" ]]; then
         iniset $CINDER_CONF DEFAULT secure_delete False