Deleting heat stack when deleting assembly

- Setting assembly status to DELETING
- Asynchronously calling heat stack delete
- Destroying the assembly object only if heat
  stack successfully got deleted.
  If stack delete errors out, setting the
  assembly status to ERROR_HEAT_STACK_DELETE
- Added sleep to functionaltests to allows for
  children assemblies to be deleted before
  delete_plan is called.

Notes:
1) If Heat stack-delete errors out, a stack with
   name = assembly_name will exist in the system
   (most likely in an indeterminate state). If
   Solum receives a subsequent call to create a
   new assembly with the same assembly name then
   Heat stack-creation most likely would error out
   because of the clashing stack name.

   One approach to solve this issue will be to append
   assembly_id to the assembly_name when creating a
   heat stack

   Created bug for this: #1316304

2) Once we start storing stack_id in the component
   table we can avoid the call to heat to get
   the stack id.

Change-Id: I353de389a88385c9660bcbec4fc20463d2f0c8ee
Partial-bug: #1314626
Co-Authored-By: Arati Mahimane (arati.mahimane@rackspace.com)
 (Helped with testing functional test changes)