Completely rewrite the Factory implementation

Make class `robottelo.factories.Factory` a base class that is, by itself,
useless. Make this base class interact with subclasses in well-defined ways, and
re-implement {Host,Model,Organization,Product}Factory as subclasses of Factory.

This change breaks both client code and tests. Code in modules
`tests.robottelo.test_factories` and `tests.foreman.api.test_X_v2` must be
rewritten.

Instance methods `Factory.attributes` and `Factory.create` have been implemented.