Create new Products for every Docker repo.

I noticed that when I ran both tests that created a custom repository
with Docker content, only the first test passed. Turns out that the way
the test suite for Docker tests (API) was created attempted to re-use a
single custom product (PROD1) and then added a custom repository named
'wordpress'. As repository names are unique within a custom product, the
second time a 'wordpress' custom repository was created the test would
fail.

I have updated the existing API tests so that a new custom product is
created for every test that creates Docker-based repositories.

Both tests pass.
Merge pull request #1594 from omaciel/fix-api-docker

Create new Products for every Docker repo.
API Content Views with yum repo test cases - issue #1265
Merge pull request #1581 from alda519/api-cv-yum

API Content Views with yum repo test cases - issue #1265
Refactor CLI factories

Refactor factories to reduce duplicated code regarding merging the
default options with provided options.

Factories now returns the data returned by the CLI object create method
instead of updating the already provided options. This avoid false
positives for options that have been provided but are not listed by the
info output.

Also, update content host factory
Merge pull request #1597 from elyezer/cli-factory-refactor

Refactor CLI factories
Skip known-failing test (see BZ 1154803)

Issuing a PUT request to the /users/:id API path will fail if the request
includes the `auth_source_id` parameter. The API doc states that this
parameter is acceptable, but the application returns an HTTP 500 error with this
message:

    auth_source_id is not allowed as nested parameter for users. Allowed
    parameters are auth_source_ldap_id, role_id, location_id, organization_id,
    usergroup_id

Test results:

    $ nosetests tests/foreman/api/test_multiple_paths.py -m 'test_put_status_code_.*_User'
    S
    ----------------------------------------------------------------------
    Ran 1 test in 0.636s

    OK (SKIP=1)
Drop method sleep_for_seconds

Method `sleep_for_seconds` is used in only one place. It causes the current
thread to sleep for somewhere between N to N + 1 seconds, inclusive, and this
behaviour seems to serve no purpose where it is used. Drop the method and just
call `time.sleep` as needed instead.
Merge pull request #1598 from Ichimonji10/cli-refactor

Drop method sleep_for_seconds
Merge pull request #1596 from Ichimonji10/bz-1154803

Skip known-failing test (see BZ 1154803)
Make `AuthSourceLDAP.read` work

Expand the signature of method `EntityReadMixin.read` with a new parameter:
`ignore`. This new argument allows a user to specify that certain attributes
should not be read from the server. Update all overrides of the `read` method to
accomodate this change.

Define `AuthSourceLDAP.read`. This allows the method to succeed, and it fixes a
failing Jenkins test.

    $ nosetests tests/foreman/api/test_multiple_paths.py -m test_entity_read_1_AuthSourceLDAP
    .
    ----------------------------------------------------------------------
    Ran 1 test in 1.534s

    OK
Merge pull request #1595 from Ichimonji10/jenkins

Make `AuthSourceLDAP.read` work
Fixed locator to fetch the updated content-view
Merge pull request #1600 from sghai/fix-test

Fixed locator to fetch the updated content-view
Delete an Activation key which has registered systems
Merge pull request #1602 from sghai/ak-test

Delete an activation key which has registered system
Fix a buggy dict update

Method `update_dictionary` behaves almost exactly like the `update` method from
the standard library. Consider these two lines of code:

    d1.update(d2)
    update_dictionary(d1, d2)

In the first case, `d1` will receive all keys from `d2`:

    >>> d1 = {1: 10, 2: 20}
    >>> d2 = {2: 25, 3: 30}
    >>> d1.update(d2)
    >>> d1
    {1: 10, 2: 25, 3: 30}

In the second case, `d1` will receive only intersecting keys from `d2`:

    >>> d1 = {1: 10, 2: 20}
    >>> d2 = {2: 25, 3: 30}
    >>> update_dictionary(d1, d2)
    >>> helpers.update_dictionary(d1, d2)
    {1: 10, 2: 25}

Fix a bug in `robottelo.ui.factory` where the two dict update methods are used,
one after the other.
Merge pull request #1603 from Ichimonji10/dict-update

Fix a buggy dict update
Skip tests failing due to BZ 1154156

The `/users` and `/hosts` paths incorrectly reject parameters that they should
accept. Skip tests that fail due to this issue. For more information, see:

* https://bugzilla.redhat.com/show_bug.cgi?id=1154156
* http://projects.theforeman.org/issues/7989

Updated test results:

    $ nosetests tests/foreman/api/test_multiple_paths.py -m User
    .SS..S..SS
    ----------------------------------------------------------------------
    Ran 10 tests in 19.046s

    OK (SKIP=5)
Add repository CLI tests for checksum type option

Add create and update tests that ensures that checksum type is defined
as expected.

Skip tests due to BZ as the checksum type is not shown in the hammer
repository info output.

Bonus: some formatting improvements

Closes #1573