Implement update of AWS::EC2::SecurityGroup rules

Such functionality is supported by AWS [1], is present in
OS::Neutron::SecurityGroup but was missing from AWS::EC2::SecurityGroup.
Updates for both Neutron and Nova-Network security groups are
implemented.
Updates are performed on per-rule basis with minimal interruption.
The implementation splits the code in two helper classes implementing
Nova and Neutron API orchestraion.

Also, security groups APIs mocks are brought closer to reality.

[1] http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html

Change-Id: I86a04612567bd6080d1b825bc58acc9a08f0c2a4
Implements: blueprint handle-update-for-security-groups
Implement handle_check for CloudWatch

This allows CloudWatch resources to be checked as part of a
stack.check() operation.

Implements: blueprint stack-check
Change-Id: I974a68cc5df6baaa1f0ad594a758747773e52373
Implement handle_check for OS::Trove::Instance

This allows OS::Trove::Instance to perform a sanity check when
performing a stack.check()

Implements: blueprint stack-check
Change-Id: Idf694cbe9119c268fb27cdc090d0edff7e4a3607
Implement handle_check for OS::Swift::Container

This allows OS::Swift::Container to perform a sanity check when
performing a stack.check()

Implements: blueprint stack-check
Change-Id: I1821c8067a5cf41b2100ab500ce7cfbe6fadeb34
Implement handle_check for OS::Nova::KeyPair

This allows OS::Nova::KeyPair to perform a sanity check when performing
a stack.check()

Implements: blueprint stack-check
Change-Id: I2091df2eb6d8b4fa05fbeb07c6e92d95131b8e0b
Use environment file in template-validate

Use the -e parameter in template-validate to override any
Default values specified in the template.  This has the desirable
effect of making Horizon use parameters updated from the environment
file.

Change-Id: I84405d1d2f5245ab7cb8b909c2ea1407d5b2973e
Closes-Bug: #1388985
Implement custom constraint for nova server

Many resources have 'InstanceId' property related
with nova server, add nova server custom constraint
to validate the existent of the server.

Change-Id: I4ee5a392488f26b2de708412d58f9c206d6f2c43
Implements: blueprint nova-custom-constraints
Remove KeypairConstraint and FlavorConstraint to nova.py

All nova custom constraints should be defined in
nova.py as neutron custom constraints.
And this change also remove the corresponding tests
to test_nova_client.py

Change-Id: Ie40192b5d53d60d2d4e152801cbd8583e6c45dac
Implements: blueprint nova-custom-constraints
Add functional test for update of group of provider resources

A new test which tests the (previously buggy) behavior when updating
a nested stack of more than one level of nesting, specifically updating
a ResourceGroup which contains provider resources.

Change-Id: I8abfd99f1ecc2cc84410fb552f18f93e47144c17
Related-Bug: #1389499
Change RouterGateway resource's name

This patch changes RouterGateway resource's name building
logic and removes unused network_id from resource's name.
If name looked like 'router_id:network_id' earlier, now resource's
name looks like 'router_id'. Also, it still supports compatibility
with old resource's names, which look like 'router_id:network_id'.

Change-Id: I33b589870f26761802de84046281b0c626a9e03c
Merge "Implement handle_check for OS::Trove::Instance"
Merge "Implement handle_check for CloudWatch"
Merge "Implement handle_check for OS::Nova::KeyPair"
Merge "Implement handle_check for OS::Swift::Container"
Merge "Use environment file in template-validate"
Merge "Implement update of AWS::EC2::SecurityGroup rules"
Merge "Implement custom constraint for nova server"
Merge "Remove KeypairConstraint and FlavorConstraint to nova.py"
Merge "Change RouterGateway resource's name"
Merge "Add functional test for update of group of provider resources"