Fix robottelo.api.client

The Python requests library has changed upstream. Make module
`robottelo.api.client` match the upstream changes.

Update the tests for this module. Use the mock library. This allows mock classes
to be dropped, manual patching/unpatching to be dropped, and function calls to
be inspected at a more granual level.
Merge pull request #1505 from Ichimonji10/fix-api-client

Fix robottelo.api.client
Update CLI activation key factory

The unlimited-content-hosts option was updated upstream. Updating the
factory to match it.

Related to #1502
Merge pull request #1504 from elyezer/fix-cli-smoke

Update CLI activation key factory
Add method `EntityReadMixin.read_raw`

`read_raw` makes a call to the server being tested and returns a
`requests.models.Response` object. It does not perform any validation, such as
checking the HTTP response code or decoding JSON.

Make `EntityReadMixin.read_json` call `EntityReadMixin.read_json`.
Remove 404 handling logic from `EntityReadMixin.read_json` and add this logic to
class `ActivationKey`. The 404 handling logic is only relevant to activation
keys.

Make module `test_multiple_paths` call `read_raw` instead of directly calling
`robottelo.api.client`.
Merge pull request #1500 from Ichimonji10/read-raw

Add method `EntityReadMixin.read_raw`
Update PERMISSIONS constant

The permissions have changed upstream, this updates the PERMISSIONS
constant to match the new changes.

Related to #1507
Add NetmaskField and update Subnet entity

Due to recent upstream builds the mask Subnet's fields are being
validated for a valid netmask value. This adds a NetmaskField that
generates valid netmasks using FauxFactory gen_netmask generator. Also
updates the Subnet's mask field to NetmaskField.

Related to #1514
Merge pull request #1509 from elyezer/update-permissions-constant

Update PERMISSIONS constant
Merge pull request #1515 from elyezer/update-subnet-entity

Add NetmaskField and update Subnet entity