Ensure delete domain removes all owned entities

Deleting a domain should delete all Users, Groups and Projects
that are owned by that domain.  This is intertwined with making sure
that deleting Users/Projects clean up their relevant Tokens and
Credentials (raised as a separate bug, bug fixed here).

To help avoid inadvertent deletion, we insist that a domain must
be disabled before it can be deleted.

In implementing this change, it was discovered that the exception
CredentialNotFound is referenced in the identity backend, but
never defined - this was needed here for the unit tests. This is raised
as a separate bug, and fixed here. A further bug has been raised
that this indicates we are lacking in negative testing for
Credentials (not fixed in this change)

Fixes Bug #1097995
Fixes Bug #1155921
Fixes Bug #1155924

Change-Id: Ibc926f8212fb9bd4426088339a21002a07c86984
Merge "Ensure delete domain removes all owned entities"