Create, test and use EntityDeleteMixin

First commit message:

> Create and test robottelo.orm.EntityDeleteMixin
>
> Create a mixin class which provides inheriting classes with a `delete` method.
> Under normal circumstances, this method returns either `None` or a foreman task
> ID. Add tests for this class.

Second commit message:

> Make entities and tests use orm.EntityDeleteMixin

> Insert `orm.EntityDeleteMixin` into the class hierarchy of several entity
> classes. (e.g. Organization and Architecture) Update the following modules to
> use the new `delete` method:
>
> * `tests/foreman/api/test_multiple_paths.py`
> * `tests/foreman/api/test_role_v2.py`
> * `tests/foreman/api/test_system_v2.py`
Sure, this makes sense. I think that waiting for a job to complete regardless of the status code (e.g. 200, 201, 202, 204) follows the Principle Of Least Astonishment.

I originally considered returning a ForemanTask object in case of an HTTP 202 (accepted), but that's bad for two reasons:

* Returning a ForemanTask object necessitates a circular import. (I don't want to undertake the necessary hacks, assuming it's possible.)
* The client still has to check the return value of this method call, and it's easy to forget to check.

I think a better approach is to do much what you suggested:

* By default, wait for the task to complete.
* If the user has requested that the method immediately return, either return `None` or the ID of the ongoing tasi.