Added new make_product method to factory.py.

Added a new make_product method to handle CLI tests.
Remove empty "" from standard CLI output.

When a field does not have any data, hammer cli returns an empty ""
which then gets converted to u'""'. Trying to assert if a field is None
or if its length is equal to zero was failing, so now I replace '""'
with ''.
Adding CLI tests for Products.

This handles Issue #182 and adds CL CRUD tests for hammer product command.
Added more CLI tests for Products.

Added CRUD CLI tests for products. This closes issue #182.

```bash
$ nosetests -c robottelo.properties tests/cli/test_product.py
2014-03-26 16:32:27 - robottelo - INFO - Paramiko instance prepared (and would be reused): 0x1026b4150
@Test: Check that only valid names can be used ... ok
@Test: Check that only valid names can be used ... ok
@Test: Check that only valid names can be used ... ok
@Test: Check that only valid names can be used ... ok
@Test: Check that only valid names can be used ... ok
@Test: Check that only valid names can be used ... ok
@Test: Check that only valid labels can be used ... ok
@Test: Check that only valid labels can be used ... ok
@Test: Check that only valid labels can be used ... ok
@Test: Check if product can be created with random names ... ok
@Test: Check if product can be created with random names ... ok
@Test: Check if product can be created with random names ... ok
@Test: Check if product can be created with random names ... ok
@Test: Check if product can be created with random names ... ok
@Test: Check if product can be created with random names ... ok
@Test: Check if product can be created with random labels ... ok
@Test: Check if product can be created with random labels ... ok
@Test: Check if product can be created with random labels ... ok
@Test: Check if product can be created with random labels ... ok
@Test: Check if product can be created with random labels ... ok
@Test: Check if product can be created with random labels ... ok
@Test: Check if product can be created with random description ... ok
@Test: Check if product can be created with random description ... ok
@Test: Check if product can be created with random description ... ok
@Test: Check if product can be created with random description ... ok
@Test: Check if product can be created with random description ... ok
@Test: Check if product can be created with random description ... ok
@Test: Check if product can be created with gpg key ... ok
@Test: Check if product can be created with gpg key ... ok
@Test: Check if product can be created with gpg key ... ok
@Test: Check if product can be created with gpg key ... ok
@Test: Check if product can be created with gpg key ... ok
@Test: Check if product can be created with gpg key ... ok
@Test: Check if product can be created with sync plan ... SKIP: Test not implemented
@Test: Check if product can be created with sync plan ... SKIP: Test not implemented
@Test: Check if product can be created with sync plan ... SKIP: Test not implemented
@Test: Check if product can be created with sync plan ... SKIP: Test not implemented
@Test: Check if product can be created with sync plan ... SKIP: Test not implemented
@Test: Check if product can be created with sync plan ... SKIP: Test not implemented
@Test: Check if product can be deleted ... ok
@Test: Check if product can be deleted ... ok
@Test: Check if product can be deleted ... ok
@Test: Check if product can be deleted ... ok
@Test: Check if product can be deleted ... ok
@Test: Check if product can be deleted ... ok
@Test: Update the description of a product ... ok
@Test: Update the description of a product ... ok
@Test: Update the description of a product ... ok
@Test: Update the description of a product ... ok
@Test: Update the description of a product ... ok
@Test: Update the description of a product ... ok
@Test: Update the label of a product ... ok
@Test: Update the label of a product ... ok
@Test: Update the label of a product ... ok
@Test: Update the label of a product ... ok
@Test: Update the label of a product ... ok
@Test: Update the label of a product ... ok
@Test: Update product's gpg keys ... ok
@Test: Update product's gpg keys ... ok
@Test: Update product's gpg keys ... ok
@Test: Update product's gpg keys ... ok
@Test: Update product's gpg keys ... ok
@Test: Update product's gpg keys ... ok
@Test: Update product's sync plan ... SKIP: Test not implemented
@Test: Update product's sync plan ... SKIP: Test not implemented
@Test: Update product's sync plan ... SKIP: Test not implemented
@Test: Update product's sync plan ... SKIP: Test not implemented
@Test: Update product's sync plan ... SKIP: Test not implemented
@Test: Update product's sync plan ... SKIP: Test not implemented

----------------------------------------------------------------------
XML: foreman-results.xml
----------------------------------------------------------------------
Ran 69 tests in 881.441s

OK (SKIP=12)
```
More assertions for gpg update tests.

Added assertions to test where multiple gpg keys are created and a
product is updated to include one or the other.
Merge pull request #579 from omaciel/add-products-cli

Added CRUD CLI tests for products. This closes issue #182.