Deduplicate test data

Create function `_test_data` in module `tests.foreman.api.test_repository`. Use
this function to feed data to several DDT data decorators, like this:

    @ddt.data(*_test_data())
    def test_foo(self, data):
        ...

This allows test data to be written out once within the body of that function
and then re-used in several places.
Merge pull request #1734 from Ichimonji10/test-repository

Deduplicate test data
Update EntityDeleteMixin, change _poll_task args

Create method `EntityDeleteMixin.delete_raw`. This method is useful when a
client wishes to delete something and get the response object, which contains
information such as a status code and the raw byte response.

Make method `EntityDeleteMixin.delete` act more like other methods that deal
with foreman tasks. It now always returns a dict of data, rather than evaluating
some mildly complex logic and returning either a foreman task ID or None.

Change the arguments to the `robottelo.orm._poll_task` method. Make that method
use `None` as a default argument to several methods instead of concrete values.
This change makes it easier to override that method.

Update the unit tests for `robottelo.orm.EntityDeleteMixin.delete`.

    $ nosetests tests/robottelo/
    ......................................................................................................................................................
    ----------------------------------------------------------------------
    Ran 150 tests in 0.107s

    OK

Use method `delete_raw` instead of `client.delete`. Using `delete_raw` allows
for more compact code.

    $ nosetests tests/foreman/api/test_multiple_paths.py  -m test_delete_status_code
    ......................
    ----------------------------------------------------------------------
    Ran 22 tests in 31.614s

    OK
Merge pull request #1736 from Ichimonji10/delete-raw

Update EntityDeleteMixin, change _poll_task args
Tweak smoke test "get_api_links"

Make the errors produced by the test more useful. For example, this comparison:

    assertEqual(frozenset(foo.keys()), frozenset(bar.keys()))

produces much nicer error messages than this comparison:

    for k in foo.keys():
        self.assertIn(k, bar)

Rename several variables for the sake of clarity. For example, use this
assertion:

    self.assertEqual(
        frozenset(api_paths[group]),
        frozenset(API_PATHS[group])
    )

Instead of this assertion:

    self.assertEqual(frozenset(paths), frozenset(API_PATHS[category]))
Update robottelo's list of API paths

Several new API paths have been added.

* @cfouant can vouch for the `activation_keys` paths.
* jsherrill can vouch for the new `errata` path.
* mmccune can vouch for the new `mail_notifications` paths.
* partha can vouch for the `docker_images` and `docker_tags` paths.

There is a bug in apipie, so these paths differ from what the server currently
returns. This bug is described in BZ 1166875. Make the test code accomodate this
bug.