Fix race condition when two Instances are deployed

Murano uses Heat to allocate OpenStack resources by creating and
updating one Heat stack. All changes to stack are stored in shared
variable exposed via call to environment.stack.updateStack.

Allocation of resources needed by Instance class is done in several calls
to environment.stack.updateStack therefor in case of simultaneous deployment
of two instances of class Instance race condition is possible.

Instance class was rewritten to have only one call to stack.updateStack
that is going to eliminate possible race condition.

P.S. This change also introduce new function mergeWith that can merge
two dicts.

Change-Id: Ib3b0be04e7d0b6107466bd5837278a12f01cf766
Closes-Bug: #1364824
Merge "Fix race condition when two Instances are deployed"