Fix OneToManyField, simplify OneToOneField

The methods `Factory.build` and `Factory.create` misbehave when a
`OneToManyField` is involved. For example, the following both raise exceptions:

    entities.Filter(role=N, permission=[X, Y, Z]).build()
    entities.Filter(role=N, permission=[X, Y, Z]).create()

(For the above example, you'll need to fix up `Filter`, the letters above all
represent numbers. Just follow the example.)

Attempting to fix the above exceptions as-is is challenging, because the
implementation of `OneToManyField` is highly complicated. Thus, do the
following:

* Greatly simplify the implementation of `OneToManyField` so as to be much more
  comprehensible to mere mortals.
* Simplify the implementation of `OneToOneField` so that it is highly similar to
  the implementation of `OneToManyField` - and therefore easy to understand.
* Update the set of unit tests for methods `OneToOneField.get_value` and
  `OneToManyField.get_value`.

With this done, also fix up the implementation `Factory.build` to properly deal
with `OneToManyField`s.
Fixed few more UI tests
Merge pull request #1216 from sghai/fix-test

Fixed few more UI tests
Merge pull request #1220 from Ichimonji10/one-to-n-field

Fix OneToManyField, simplify OneToOneField
Make System().create() work

When `System().create()` is called, it fails with the following error messages:

* `u'facts': [u"can't be blank"]`
* `u'cp_type': [u'is not included in the list']`

Update the `System` entity so that these errors are no longer encountered. To
fix these errors, the make the following fixes:

* By default, set `System.facts` to `{'': ''}`.
* By default, set `System.type_` to 'system'.

Also, make some more minor changes:

* Alphabetically reorder `System`'s attributes.
* Remove the set of comments from `System`. These comments can be dangerous, as
  they can become outdated relative to the official API docs. (Note that this
  was the case with the `System.type_` attribute.)
* Rename `System.system_type` to `System.type_`. This is done so that the
  `System` entity can map as closely as possible to what the server is
  expecting. The server is expecting a field named "type", but that is a
  reserved Python keyword, and appending an underscore to a name is a standard
  way of indicating that a name clash is being avoided.
Partially test the System entity

Add the `System` entity to module `tests.foreman.api.test_multiple_paths`.
Several tests are not currently functioning, for reasons stated within the
module itself (search for "FIXME").