Completely rewrite factories

Completely change the implementation of factories. Formerly, the Factory class
acted based on the Entity passed to __init__, data defined in subclasses and
keyword arguments to attributes() and create(). Though workable, this setup was
complex and tightly bound to entities.

Now, the Factory class implements the attributes() and create() methods, and
that's it. Subclasses provide information to these public methods by overriding
private methods. Subclasses have the freedom to fetch this information from any
location they choose: they can generate data directly, read it from an Entity,
fetch info from across a network or a data file, or anything else. This new
structure allows complexity to be better distributed. The parent Factory class
is just concerned with assembling data into a useful format and talking to an
API, and child classes are concerned with providing correct data to the parent
Factory class.

One new class is of particular imporance: EntityFactoryMixin. This class can be
inserted into the inheritance hierarchy of an Entity object. If done, the Entity
object can use the method defined on the parent Factory class, such as
attributes(), create() and _unpack_response().
Make orm fields and entities work with factories

Push value generation logic down into fields. For example, one can now call
`StringField(max_len=255).get_value()`. This is better than inserting value
generation logic into factories.

Update the class definitions in module `robottelo.entities`. Most importantly,
the format of some data in `Meta` classes has been updated. For example, rather
than writing this:

    api_names = {
        'name': 'model[name]',
        'info': 'model[info]',
        'vendor_class': 'model[vendor_class]',
        'hardware_model': 'model[hardware_model]',
    }

One should write this:

    api_names = (
        ('name', 'model[name]'),
        ('info', 'model[info]'),
        ('vendor_class', 'model[vendor_class]'),
        ('hardware_model', 'model[hardware_model]'),
    )

There are other significant changes, as well. For example, the `Model` entity
now inherits from `factory.EntityFactoryMixin`, and it overrides the
`_unpack_response` method.
Update internal tests

Update the tests for modules `robottelo.factory` and `robottelo.orm`.
Update API tests

Update all tests to use the altered factories.
Update docs
Merge pull request #955 from Ichimonji10/factories

Rewrite factories, write more tests