Move creation of custom env to environment module

This patch replaces the _nested_environment with a new method in the
environment module.  The intent is to make it easy for some resources
(such as remote-stack) to use its own environment without having to
subclass from StackResource.

Change-Id: Ice0124aa21086788e957eb708b6bc423779202bc
Pickup the region name passed in from heatclient

For standalone heat operation, middleware will need to set the region
from the X-Region-Name header. Then the keystoneclient will use this
region_name instead of the heat_region_name config option.

Closes-Bug: 1223068
Change-Id: Ia859e67cf8c6e0d1ed9d9e7f5eab2d138c6421ef

Conflicts:

	heat/tests/db/test_migrations.py
Adds multi-region support for stack resource

Adds new resource type called OS::Heat::Stack which allows
creating new stack in specified region using heatclient.

Implements: blueprint multi-region-support

Co-Authored-By: Qiming Teng <tengqim@cn.ibm.com>

Change-Id: I62cb07877702c57dd0e77dbcb0e123a3ec2c885d

Conflicts:

	heat/tests/utils.py
Fix suspend/resume error in RemoteStack

Current implementation of suspend and resume are incorrectly
implemented. This patch fixes the calls to heatclient.

Closes-Bug: 1401876
Change-Id: I07484d01161ee573dcb1a7908784d5caee9bbe58
Always update nested stacks

There's no reason to not issue an update to a nested stack, so don't bother
trying to decide if its inputs have changed (and especially don't replace
it because it's in a failed state). Overriding _needs_update() also allows
us to remove what was effectively an isinstance check from the previous
handling of failed states.

Change-Id: Ia48ebfcb6c1b3a904f01a83f8f34d8c7a13bb2be
Related-Bug: #1383618

Conflicts:

	heat/engine/stack_resource.py
Fixed an incorrect db migration number.
Fixed an error on picking up region on nested stack