Implement update for neutron network resources

This change allows any updatable properties to be updated
on an existing network without replacement. Documentation
is limited on what properties are updatable, so discovery
was manual.

The method prepare_update_properties can be used by other
neutron resources to implement their updates.

Change-Id: Ib128123544c4a62b4ba672203c1a81cf082a8847
Implement OS::Neutron::SecurityGroup

Some notes on the implementation:
* There is a single list of rules, with the 'direction'
  attribute denoting whether ingress or egress (ingress is the default)
* All attributes are updatable without resource replacement using
  prepare_update_properties.
* Rules update is implemented by:
  * deleting all rules
  * restoring default egress rules which allow all egress
  * adding new rules
* The remote_mode attribute allows switching from remote_ip_prefix
  to remote_group_id based associations
* As documented in the remote_group_id property, a rule can establish
  a self-reference to its own security group by specifying
  remote_mode: remote_group_id and not specifying any value for
  remote_group_id

Implements blueprint native-neutron-securitygroup
Partial-Bug: #1206313
Partial-Bug: #1243686

Change-Id: Id240fe02b5b85d7b11f48411a58e98d2d575c9a0
Merge "Implement update for neutron network resources"
Merge "Implement OS::Neutron::SecurityGroup"