Allow string entity names, improve OneToManyField

Allow one entity to reference another using a string name. For example, an
entity can now contain this:

    operatingsystems = orm.OneToManyField('OperatingSystem', null=True)

Or an entity could contain this:

    organization = orm.OneToOneField('Organization', required=True)

And these string-based references now work correctly. Currently, these
string-based references only work if the named entity exists in module
`robottelo.entities`. However, the underlying method which implements
string-based references is written such that it is fairly trivial to allow
references to entities in absolutely any module.

Also, add method `get_value` to `OneToManyField`s, and update
`EntityFactoryMixin` to handle the values returned by
`OneToManyField.get_value`. This allows recursive `create()` calls to succeed
when one-to-many references are encountered.
Add API tests for path "architectures"

Add simple tests for `/architectures` and `/architectures/:id`. Again, simply
check whether it is possible to get the relevant page, create an entity, read
that entity after creation and delete it.

Turn class `robottelo.entities.Architecture` into a factory.
Rename argument/field "model" to "entity"

Do this for class `robottelo.orm.OneToManyField`. This change allows the
terminology used in this application to be more focused and correct.
Implementation to add/remove errata filter
Merge pull request #971 from sghai/errata-filter

Implementation to add/remove errata filter
Merge pull request #970 from Ichimonji10/tests

Write more tests, update OneToManyField
Make `Factory.create` exception messages better

Ensure that when `Factory.create` raises a `FactoryError` exception, the path
being POSTed to is included in the error message.
Use DDT module to slim down test suite.

Creat module `tests.foreman.api.test_multiple_paths`. This module contains
common tests that should be performed over and over again for a variety of URLs.
Move many of the tests from
`tests.foreman.api.test_{architecture,host,model,operatingsystem,organization}_v2`
into this module.
location tests UI: Added remove entity testcases
location tests: Fix for travis
Implement method Factory.build()

New method creates all of a factory's dependencies, recursively, then generates
attributes for the current object. Update tests in module
`tests.robottelo.test_factory`.

Use new method to move more tests into module
`tests.foreman.api.test_multiple_paths`. Delete old, empty test modules.
Add HTTP PUT tests

Add tests that issue HTTP PUT requests to several URLs.
Fix `make graph-entiites` command

A recent PR more fully implemented `OneToManyField`s. This is good. However,
that PR also broke the graph-entities script. This commit inserts some
type-checking into `scripts.graph-entities`, thus fixing the breakage which
occurred when `OneToManyField`s were improved.

Also:

* Create an `Errata` entity. The entity is read-only.
* Visually distinguish between entities which are factories and entities which
  are not. This makes it easier to determine how much progress has been made in
  creating factories.
Replaced assertISNotNone for assertTrue as the check here is object is not None rather than a boolean value
Merge pull request #975 from Ichimonji10/shrink-tests

Shrink test code, implement Factory.build()
Merge pull request #976 from Ichimonji10/graph-entities

Fix `make graph-entities` command
Merge pull request #974 from kbidarkar/location-tests3

Location tests3
Fix requirements-optional.txt

To generate a graph of entity dependencies, the graphviz python module is not
required. Instead, the user should have the normal graphviz program installed.
Update both the documentation and requirements file to reflect this fact.
Enable Sphinx's nitpicky mode

Make Sphinx warn about all references where the target cannot be found. Fix some
of those references, and make Sphinx ignore others (e.g. to the "str" target).
Implemented CV tests