Added new exceptions to be used with Git Automate

This work is related to the GIT Issue.
https://github.com/ManageIQ/manageiq/issues/1199

Issue #1199
Use Domain instead of Namespace in specs

Issue #1199

When we move to GIT a domain woud be a separate repository and will
be distinct from Namespaces. In the Postgres the Domain and Namespace
are stored in the same table.
The specs were changed to count namespaces separately from domains.
Merge pull request #1216 from mkanoor/namespace_to_domain

Use Domain instead of Namespace in specs
Merge pull request #1204 from mkanoor/git_exceptions

Added new exceptions to be used with Git Automate
Enhanced retirement workflow changes.

Changed the way service retirement works. Added new events,
expose methods to automate, and call into automate state machine for
retirement processing.
Expose new retirement methods for service and vm service models,
and added start_retirement method.
Added tests for retirement changes.