Make db.fakes stub out API not sqlalchemy

We shouldn't be stubbing out the backend db implementation, and instead
be stubbing out the db.api itself. One small step in making us less
sqlalchemy dependant.

Change-Id: Ifb2c45353edc281456e7407dd36b4cc4feea1ac0
Add unique constraint for security groups

- Add unique constraint (project_id, name, deleted)
  for security_groups
- Define new SecurityGroupExists exception
- Drop security_group_exists() in favor of catching
  SecurityGroupExists exception for security_group_create()

Fixes bug #1093458

Blueprint: db-enforce-unique-keys

Change-Id: Id9a1427587cc9250942d0abd9eafc69861352d9b
Merge "Add unique constraint for security groups"
Merge "Make db.fakes stub out API not sqlalchemy"
Merge remote-tracking branch 'm_src_repo/citrix-fixes' into build-temp