Make LB-updating in rolling update more reliable
Make LB-updating in rolling update more reliable

The rolling update code updates the load balancer when instances
are being updated (and thus out of service). It determines which instances
are being changed by comparing the str() of the templates. Unfortunately,
str() of dicts in Python returns keys in an unreliable order, depending on
the way the dicts were constructed. Therefore, sometimes rolling updates
would erroneously determine that instances were changing when they were not,
and take them out of service in the load balancer.

This patch contains no additional tests because it's not really possible to
reliably reproduce this across multiple platforms. Existing tests will fail if
the erroneous case is triggered.

Change-Id: Icb564a65ca118a2fc84d7df8c44330281074bbb7
Closes-Bug: #1271397

pratikmallya/heat,takeshineshiro/heat,pshchelo/heat,takeshineshiro/heat,rdo-management/heat,ntt-sic/heat,dims/heat,dragorosson/heat,gonzolino/heat,rh-s/heat,noironetworks/heat,maestro-hybrid-cloud/heat,dragorosson/heat,dims/heat,NeCTAR-RC/heat,miguelgrinberg/heat,rdo-management/heat,ntt-sic/heat,NeCTAR-RC/heat,maestro-hybrid-cloud/heat,pshchelo/heat,jasondunsmore/heat,cryptickp/heat,gonzolino/heat,steveb/heat,miguelgrinberg/heat,rh-s/heat,srznew/heat,pratikmallya/heat,srznew/heat,cryptickp/heat,openstack/heat,steveb/heat,noironetworks/heat,openstack/heat,cwolferh/heat-scratch,jasondunsmore/heat,redhat-openstack/heat,redhat-openstack/heat,cwolferh/heat-scratch