Adding default data driven tests to all CLI tests via MetaClass.

The objective of this pull request is to create a series of default CRUD tests (e.g. create, update, delete), both positive and negative, and "inject" them into a unittest-based class module for the dynamic creation of tests for a given module.

For instance, take the Foreman ```Environment``` object. Assuming you want to dynamically generate CRUD tests for this object, your test class would look as follows:

```python
from robottelo.cli.environment import Environment
from robottelo.cli.factory import make_environment
from tests.cli.basecli import MetaCLI


class TestEnvironment(MetaCLI):

    factory = make_environment
    factory_obj = Environment
```

The ```MetaCLI``` class is responsible for injecting the following tests into ```TestEnvironment```:
* test_positive_create
* test_positive_delete
* test_positive_update
* test_negative_create
* test_negative_delete
* test_negative_update

Other than making sure that your test module inherits from ```MetaCLI```, the following attributes are also required:
* ```factory```: a function that can create a real record into Foreman using as few parameters as possible. Please see ```robottelo/cli/factory.py``` for examples.
* ```factory_obj```: a python class that represents a Foreman record
* ```search_key```: (optional) the name of the field required to look up a record using the ```info``` method from hammer cli; defaults to ```name``` if not defined in the test module.

By default, ```MetaCLI``` will use data values found in the ```robottelo/cli/metatest/default_data.py``` file, which will then be passed to the dynamically created tests. However, there are certain Foreman objects that don't follow the same patterns as far as the fields required for its creation. A good example is ```User``` which does not have a ```name``` field, but a ```login``` field instead. For this scenario, it is important to provide your own set of data values to the tests by overiding the following attributes in your test module:
* POSITIVE_CREATE_DATA
* NEGATIVE_CREATE_DATA
* POSITIVE_UPDATE_DATA
* NEGATIVE_UPDATE_DATA
* POSITIVE_DELETE_DATA
* NEGATIVE_DELETE_DATA

```MetaCLI``` will then use the data values provided by your module instead of the generic default ones defined in the ```robottelo/cli/metatest/default_data.py``` file.

It is also possible to completely override the dynamically injected tests themselves by declaring your own tests in the test module itself.

Finally, inheriting from ```MetaCLI``` is not a mandatory way to create CLI tests, as you can still inherit from ```BaseCLI``` if you don't want to use the dynamic tests from ```MetaCLI```.