Add quotas for Server Groups (V2 API compatibility & V2.1 support)

Server groups can be used to control the affinity and anti-affinity
scheduling policy for a group of servers (instances).  Whilst this is
a useful mechanism for users such scheduling decisions need to be
balanced by a deployers requirements to make effective use of the
available capacity.

This change adds quota values to constrain the number and size of
server groups a user can create.

Two new quota values are be introduced to limit the number of server
groups and the number of servers in a server group. These will follow
the existing pattern for quotas in that:

* They are defined by config values, which also include the default
  value

* They can be defined per project or per user within a project

* A value of -1 for either quota will be treated as unlimited

* Defaults can be set via the quota groups API

* Values may be changed at any time but will only take effect at the next
  server group or server create.   Reducing the quota will not affect any
  existing groups, but new servers will not be allowed into group
  that have become over quota.

This is part one of a linked sequences of changes that implement the
new quotas - split to make the reviews easier.

This part adds the definition of the new quota values, but leaves the
V2 API unchanged.  The V2.1 API is updated as it shows all quota values.

The second part adds the new V2 API extension to make the new quota
values visible and changeable.  At this point a Tempest change is
required to get a clean run as it checks for a specific set of
values.

The third part implements the quota checks themselves.

Thanks to Cyril Roelandt for supplying some of the unit tests.

Co-authored-by: Cyril Roelandt <cyril.roelandt@enovance.com>

Implements: blueprint server-group-quotas
DocImpact

Change-Id: Ib281e43eabfbd176454bde7f0622d46fb04fcb79
Merge "Add quotas for Server Groups (V2 API compatibility & V2.1 support)"