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.
Added test for add-contenthost/removecontenthost for host-collection
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
implemented activation key test test_positive_create_activation_key_5
fixed the add/removecontent-host test for hostcollection
Merge pull request #1217 from alda519/709_act_key

implemented activation key test test_positive_create_activation_key_5
fixed the add/removecontent-host test for hostcollection
Merge pull request #1221 from tkolhar/test_cli

Added test for add-contenthost/removecontenthost for host-collection
Flesh out ComputeResource entity, test it.

When creating a new "compute resource" entity, a variable set of values must be
provided to the Foreman server. The exact set of values depends on the specified
provider. (e.g. EC2, Rackspace, etc.) Flesh out the ComputeResource entity with
logic necessary for handling this variability in requirements.

Add some API tests for the ComputeResource entity All tests for the
ComputeResource currently fail. These tests fail for a variety of reasons. For
example:

* Creating a compute resource with a provider of 'Rackspace' causes Foreman to
  throw an HTTP 500 with the message "undefined method `upcase' for
  nil:NilClass".
* Creating a compute resource with a provider of 'GCE' fails because Foreman
  needs more data. However, the types of data needed are not discussed in the
  API docs.
* Creating a compute resource with several other providers causes Foreman to
  return the following error: "getaddrinfo: Name or service not known".

These issues should be tackled by someone who knows more about compute
resources.