Generate default values for more field types

Class `Factory` is only capable of generating values for
`robottelo.orm.StringField` fields. Make it capable of generating values for the
following field types:

* `BooleanField`
* `EmailField`
* `FloatField`
* `IntegerField`
* `IPAddressField`
* `MACAddressField`
* `StringField`

Write unit tests for the relevant changes.
Add a unit test

Ensure that when `robottelo.factories._get_default_value` is called with an
unsupported field type, a `ValueError` is raised.
Allow `Factory` subclasses to provide field values

Subclasses of class `Factory` can now provide field values. For example, a class
`PersonFactory` might include code like this:

    def __init__(self):
        super(PersonFactory, self).__init__(
            entities.Person,
            interface=interface
        )
        self.field_values['name'] = 'Alice'

When this is done, 'Alice' will be used for the 'name' field instead of what is
generated by `factories._get_default_value`.
Rewrite docstrings
Make unit tests assertions more specific

For example, do not do this:

    self.assertTrue(len(string) > 0)

Instead, do this:

    self.assertGreater(len(string), 0)

Thanks to @elyezer for the suggestions.
Merge pull request #943 from Ichimonji10/factories

More factories!