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
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 "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"